我刚刚迁移到.NET Core 3.1,并且在必须更新的其他内容中,我无法正常使用ajax调用。
当我进行ajax调用时,没有数据绑定到我的操作中的对象参数。
这是我在剃须刀页面上拨打电话的方式
fetch('/Administration/UpdateUserStatus', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val()
},
body: JSON.stringify(data)
})
和我的控制器动作
[HttpPost]
public IActionResult UpdateUserStatus([FromBody]User user) {
...
}
在上面的示例代码中,调试代码后,我看到user
作为null
进入,因此来自ajax调用的数据未绑定到User
对象。
如果删除[FromBody]
,则user
不再以null
的形式出现,但数据仍未绑定。所有属性均为null或默认值。
。NET Core 2.1一切正常。
需要在Startup.cs
中添加吗?也许我缺少新配置?
谢谢
我解决了我的问题。 Json.NET已从.NET Core 3.0中删除,因此我必须添加对程序包Microsoft.AspNetCore.Mvc.NewtonsoftJson
(NuGet)的引用,然后在ConfigureServices
方法下将.AddNewtonsoftJson()
添加到Razor Pages,就像这样
services.AddRazorPages().AddNewtonsoftJson();
此后,一切都照常进行。