我有两个解决方案,一个是MVC5 Web应用程序,另一个是MVC核心2.2 Web应用程序,充当基本Web表单。
我试图将webform数据(使用ViewModel)发布到MVC5 Web应用程序API。
代码
MVC5 web app / api上的POST方法
// POST
[HttpPost]
public IHttpActionResult Post([FromBody] WebFormDataVM personData)
{
// logic here
}
MVC核心webform(发布到上面)
[HttpPost]
public async Task<ActionResult> Create(PersonVM personData)
{
var path = "api/WebForm/Post";
var url = new Uri("http://localhost:60291/");
var client = new HttpClient();
client.BaseAddress = url;
var response = await client.PostAsJsonAsync(path, personData);
return RedirectToAction("Index");
}
问题
当发布viewmodel
时,POST
方法API参数(WebformDataVM personData)
始终是null
。
我尝试了完全相同的设置,但使用MVC5项目/解决方案而不是核心,它的工作没有失败。
我试过的
发布字符串而不是视图模型对象 从.net核心项目中删除HTTPS(通过项目选项)
任何帮助将不胜感激。
你应该将你的对象序列化为json
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var url ="yourUrl" // http://localhost:60291/api/WebForm/Post
var model=yourObject; //PersonVM
HttpResponseMessage response = await client.PostAsync(url, new StringContent(JsonConvert.SerializeObject(yourObject),Encoding.UTF8, "application/json"));
}
请尝试使用此解决方案
[HttpPost]
public async Task<ActionResult> Create(PersonVM personData)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:60291/api/WebForm/Post");
var response = await client.PostAsJsonAsync("personData", personData);
return RedirectToAction("Index");
}
}
[HttpPost]
public IHttpActionResult Post(WebFormDataVM personData)
{
// code
}