我有两种解决方案,一种是MVC5网络应用程序,另一种是作为基本web表单的MVC核心2.2Web应用程序。
我试图将webform数据(使用ViewModel)发布到MVC5 web应用程序API中。
代码
MVC5 web应用程序/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");
}The Issue
在发布viewmodel时,POST方法API参数(WebformDataVM personData)始终是null。
我尝试过完全相同的设置,但使用的是MVC5项目/解决方案,而不是核心,它工作正常。
我已经尝试过的
发布字符串而不是视图模型对象
从.net核心项目中删除HTTPS (通过项目选项)
任何帮助都将不胜感激。
发布于 2019-04-14 09:57:57
你应该把你的目标变成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"));
}发布于 2019-04-12 16:07:38
请试一下这个解决方案。
[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
}https://stackoverflow.com/questions/55651868
复制相似问题