AJAX post数据到达ASP.NET Core 2.1控制器时为null
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AJAX post数据到达ASP.NET Core 2.1控制器时为null相关的知识,希望对你有一定的参考价值。
我正在使用此jQuery代码将数据发布到ASP.NET Core MVC 2.1.2页面:
function OnCountryChange() {
$.ajax({
url: "/OnCountryChange",
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
headers: {
"RequestVerificationToken": $('input[name = __RequestVerificationToken]').val()
},
data: JSON.stringify({
sCountryCode: "Test 123"
})
});
}
我使用这种方法在控制器中收到帖子:
[HttpPost]
[ValidateAntiForgeryToken]
[Route("/OnCountryChange")]
public IActionResult OnCountryChange([FromBody] string sCountryCode)
{
logger.LogDebug($"Country code is: {sCountryCode ?? "null"}");
return Json(sCountryCode);
}
打印到日志的输出是:
国家/地区代码为:null
原始请求正文(使用Fiddler查看)如下所示:
{"sCountryCode":"Test 123"}
为什么不传递数据?
答案
我不熟悉C#
,但在你提出的问题中你已添加
contentType: "application/json; charset=utf-8"
在你的Ajax
方法中,这意味着数据参数是json
格式,所以你需要访问json
对象而不是直接访问字符串。
解决它的两种方法:
一个。将您的C#
控制器方法更改为像json
对象一样访问
湾发送没有Ajax
的json
参数,代码类似如下:
function OnCountryChange() {
$.ajax({
url: "/OnCountryChange",
type: "POST",
datatype: "json",
headers: {
"RequestVerificationToken": $('input[name = __RequestVerificationToken]').val()
},
data: {sCountryCode: "Test 123"}
});
}
以上是关于AJAX post数据到达ASP.NET Core 2.1控制器时为null的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core webapi Post接收不到ajax请求数据
如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?