【发布时间】:2019-09-03 05:35:35
【问题描述】:
我有两种解决方案,一种是 MVC5 网络应用程序,另一种是用作基本网络表单的 MVC 核心 2.2 网络应用程序。
我正在尝试将网络表单数据(使用 ViewModel)发布到 MVC5 网络应用 API。
守则
MVC5 web app/api上的POST方法
// POST
[HttpPost]
public IHttpActionResult Post([FromBody] WebFormDataVM personData)
{
// logic here
}
MVC 核心网络表单(发布到上面)
[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(通过项目选项)
任何帮助将不胜感激。
【问题讨论】:
-
您可以捕获您在提琴手(或其他工具)中发送的请求,并将工作请求与失败请求进行比较。它们实际上是一样的吗?
-
干杯,有趣的是,两个请求都成功了,但是一个没有传递数据(在 POST 方法上显示为 null)而另一个传递了。提琴手似乎反映了这一点......
-
您可以发布正在发送的 Json 吗?
-
恐怕在提琴手中看不到 JSON。我可以在 WebForms 选项卡中看到表单值。
-
@bsod_ 你能发布工作请求和不工作请求的原始版本吗?你打电话给
PostAsJsonAsync,所以对我来说为什么你没有json数据没有意义......你确定vm在调用它时不为空,并且你在这里发布的代码准确地反映了你有什么?
标签: c# asp.net-mvc asp.net-web-api asp.net-core asp.net-core-mvc