【发布时间】:2020-06-17 12:24:11
【问题描述】:
我最近从 .NET Core 2.2 升级到 3.1 后遇到了这个有趣(令人沮丧)的问题。以前我会将数据发布到网络应用程序,接收方法如下所示:
public IActionResult OnPostAddNewDataAsync([FromBody]MyClass data)
{
//...
}
MyClass 可能是这样的:
public class MyClass
{
public string Field1 {get; set;}
public integer Value1 {get; set;}
}
(作为参考,要从 Javascript 中访问端点,您可以这样做:
await PostDataAsync("AddNewData", {
"Field1": "Hello I am",
"Value1": 7
});
async function PostDataAsync(handler, data)
{
return await $.ajax({
url: window.location.pathname + "?handler=" + handler,
type: "POST",
contentType: "application/json",
headers:
{
RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val()
},
data: JSON.stringify(data)
});
}
我花了一段时间才弄明白!)。
这很好用。
更新 .NET Core 3.1 后,我的许多 POST 方法停止工作,[FromBody] 值将为空。
注意:作为升级到 .NET Core 3.1 的一部分,我删除了对 Newtonsoft.Json 的引用,决定尝试使用新的 System.Text.Json。事实证明这很重要!
【问题讨论】:
标签: c# asp.net-core razor-pages