。NET Core 3.1中使用Fetch API进行Ajax调用

问题描述 投票:0回答:1

我刚刚迁移到.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中添加吗?也许我缺少新配置?

谢谢

ajax asp.net-mvc asp.net-core .net-core fetch-api
1个回答
0
投票

我解决了我的问题。 Json.NET已从.NET Core 3.0中删除,因此我必须添加对程序包Microsoft.AspNetCore.Mvc.NewtonsoftJson(NuGet)的引用,然后在ConfigureServices方法下将.AddNewtonsoftJson()添加到Razor Pages,就像这样

services.AddRazorPages().AddNewtonsoftJson();

此后,一切都照常进行。

Docs

© www.soinside.com 2019 - 2024. All rights reserved.