【发布时间】:2021-02-16 14:00:14
【问题描述】:
我已经多次看到这个问题被问和回答,所以我很抱歉再次重复它。但是,所有这些问题都是很久以前提出的并得到了回答,所以我不确定这些答案是否与今天的 ASP.NET Core MVC 和 jQuery 的较新版本相关。
我有一个 MVC 控制器方法,它可以像这样接受类对象参数...public async Task<IActionResult> AffiliatedUsers(UserFacilityAccessDTO userAccessInfo)
为了响应用户操作,我想从 JavaScript 函数调用此方法。
$.ajax({
url: location.origin + "/facility/affiliatedusers",
method: "POST",
我要 POST 的数据是一个格式良好的 JSON 对象,位于名为 payload 的变量中。
以下是contentType 和data 值的组合,它们有效和无效。我希望有人可以帮助我了解它不起作用的情况。
这在contentType 未指定时有效
$.ajax({
url: location.origin + "/facility/affiliatedusers",
method: "POST",
data: payload
在我的操作方法中,我发现 contentType (Request.ContentType) 设置为 application/x-www-form-urlencoded。
但是当我按如下方式传递数据时...
contentType: "application/json; charset=utf-8;",
data: JSON.stringify(payload), // MUST stringify to show up as JSON in body
我看到操作方法的参数已实例化,但没有传递任何值。即模型绑定似乎没有发生。我在某处读到 ASP.NET Core 3.1 要求您在传递 JSON 有效负载时使用 [FromBody] 装饰操作方法参数。当我这样做时,即使参数没有实例化,我也会将输入参数设置为 NULL。
我知道我有一个可行的解决方案,但我真的很好奇为什么 application/json 有效负载无法正常工作,而到目前为止我所阅读的所有内容似乎都表明这是在公园散步。我是否缺少一些简单但至关重要的设置。任何帮助将不胜感激。提前谢谢!
亲切的问候...
【问题讨论】:
-
你能分享你的
payload吗?因为我可以成功绑定,所以问题可能是你的类型不匹配造成的。
标签: jquery json ajax asp.net-core post