Ajax 在 .NET Core 3.1 中使用 Fetch API 调用

Ajax Calls with Fetch API in .NET Core 3.1

我刚刚迁移到 .NET Core 3.1,在我必须更新的不同内容中,我无法让 ajax 调用正常工作。

当我进行 ajax 调用时,none 数据绑定到我操作中的对象参数。

这就是我在剃须刀页面中调用的方式

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) {
    ...
}

在我上面的示例代码中,调试代码我可以看到 usernull 的形式出现,因此来自 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();

之后,一切如常。

Docs