想要将对象从 MVC 控制器传递到 Web api 控制器
Want to pass an object from MVC controller to web api controller
这是我的 MVC 控制器代码。
[HttpPost]
public async Task<IActionResult> InsertNewStudentAsync(ViewModel.StudentPersonalDetailsViewModel ob)
{
StudentModel obj = ViewModel.StudentPersonalDetailsViewModel.Translate(ob);
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:52494/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var bodyData = ViewModel.StudentPersonalDetailsViewModel.Translate(ob);
//HttpContent ob = new HttpContent();
var response = await client.PostAsync("api/Student/InsertStudent",obj);
}
return View();
}
在行var response = await client.PostAsync("api/Student/InsertStudent",obj);
它向我显示 obj 上的一个错误,显示
Error CS1503 Argument 2: cannot convert from 'SMS.Domain.Models.StudentModel' to 'System.Net.Http.HttpContent'
如何将该对象传递给我的 API 控制器。
那是因为它期望 HttpContent
派生 class。
要么使用PostAsJsonAsync
扩展方法
var response = await client.PostAsJsonAsync("api/Student/InsertStudent",obj);
或自己转换
var json = JsonConvert.SerializeObject(obj);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("api/Student/InsertStudent", content);
这基本上就是扩展方法在幕后所做的事情。
如果您不想添加额外的依赖项,这里有一个滚动您自己的扩展方法的示例。
public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient client, string requestUri, T obj) {
var json = JsonConvert.SerializeObject(obj);
var content = new StringContent(json, Encoding.UTF8, "application/json");
return client.PostAsync(requestUri, content);
}
这是我的 MVC 控制器代码。
[HttpPost]
public async Task<IActionResult> InsertNewStudentAsync(ViewModel.StudentPersonalDetailsViewModel ob)
{
StudentModel obj = ViewModel.StudentPersonalDetailsViewModel.Translate(ob);
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:52494/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var bodyData = ViewModel.StudentPersonalDetailsViewModel.Translate(ob);
//HttpContent ob = new HttpContent();
var response = await client.PostAsync("api/Student/InsertStudent",obj);
}
return View();
}
在行var response = await client.PostAsync("api/Student/InsertStudent",obj);
它向我显示 obj 上的一个错误,显示
Error CS1503 Argument 2: cannot convert from 'SMS.Domain.Models.StudentModel' to 'System.Net.Http.HttpContent'
如何将该对象传递给我的 API 控制器。
那是因为它期望 HttpContent
派生 class。
要么使用PostAsJsonAsync
扩展方法
var response = await client.PostAsJsonAsync("api/Student/InsertStudent",obj);
或自己转换
var json = JsonConvert.SerializeObject(obj);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("api/Student/InsertStudent", content);
这基本上就是扩展方法在幕后所做的事情。
如果您不想添加额外的依赖项,这里有一个滚动您自己的扩展方法的示例。
public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient client, string requestUri, T obj) {
var json = JsonConvert.SerializeObject(obj);
var content = new StringContent(json, Encoding.UTF8, "application/json");
return client.PostAsync(requestUri, content);
}