【问题标题】:Ajax Calls with Fetch API in .NET Core 3.1.NET Core 3.1 中使用 Fetch API 的 Ajax 调用
【发布时间】:2020-04-11 11:10:13
【问题描述】:

我刚刚迁移到 .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) {
    ...
}

在上面的示例代码中,调试代码我可以看到usernull 出现,因此来自ajax 调用的数据不会绑定到User 对象。

如果我删除[FromBody]user 不再以null 的形式出现,但数据仍然没有绑定。所有属性为 null 或默认值。

.NET Core 2.1 一切正常。

我需要在Startup.cs 中添加什么吗?也许我缺少一个新配置?

谢谢

【问题讨论】:

  • 首先要检查两个版本的请求,看看有没有区别。

标签: ajax asp.net-mvc asp.net-core .net-core fetch-api


【解决方案1】:

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

services.AddRazorPages().AddNewtonsoftJson();

之后,一切都像以前一样工作。

Docs

【讨论】:

  • 天哪,你救了我!
  • 谢谢!花了很多时间试图理解为什么模型绑定在我的 AJAX POST 请求上失败。我对文档感到困惑,因为我认为 System.Text.Json 将处理模型绑定...
  • 发现这篇有用的帖子可以进一步解释:dev.to/wattengard/…
  • 两天后我终于找到了这个答案。谢谢
猜你喜欢
  • 2023-02-07
  • 2021-03-25
  • 1970-01-01
  • 2021-10-02
  • 2020-05-06
  • 2018-05-02
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多