我将旧的asp.net Web表单应用程序迁移到.NET CORE2 MVC,并且在尝试使用bool参数对控制器进行AJAX调用时,控制器似乎无法将其隐式解析为bool就像以前在ASP解决方案中一样。当true传递给控制器时,参数仍然以false结尾。 我知道参数发送正确。 .NET Core是否缺乏对此的支持,或者我错过了什么?
PS。我可以将参数更改为JObject并以这种方式检索值,但是我对于为什么不能正常工作而言是一个过程。
谢谢!
AJAX
$.ajax({
type: "POST",
url: "GetActiveUsersAndAllGroups",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ secret: bfsGrupper.secret }),
beforeSend: ShowLoader(),
complete: function () { $.unblockUI(); },
success: function (response) {
//Stuff
},
error: function (response) {
//Stuff
}
});
控制器
[Route("GetActiveUsersAndAllGroups")]
public IActionResult GetActiveUsersAndAllGroups([FromBody] bool secret)
{
return Ok(_manager.GetBaseTableData(HttpContext.User.Identity.Name,secret));
}
答案 0 :(得分:2)
模型绑定绝对适用于ASP.NET Core。它不适合你,因为你试图获得一个原始的布尔秘密作为参数,但在你的POST中你发送了一个JSON对象。更改参数以接受类或不发送整个JSON对象。
我还注意到您正在向名为GetActiveUsersAndAllGroups
的网址发送POST请求。我可能会选择将POST请求更改为GET请求,因为POST用于保存数据。这样做的另一个好处是,您可以将秘密作为查询字符串参数传递,在这种情况下感觉更合适:GetActiveUsersAndAllGroups?secret=true
。请务必将[FromBody]
更改为[FromQuery]
。