使用Jquery Ajax将bool参数传递给.NET Core2 MVC Controller

时间:2018-06-12 08:29:13

标签: c# jquery ajax .net-core

我将旧的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));
    }

1 个答案:

答案 0 :(得分:2)

模型绑定绝对适用于ASP.NET Core。它不适合你,因为你试图获得一个原始的布尔秘密作为参数,但在你的POST中你发送了一个JSON对象。更改参数以接受类或不发送整个JSON对象。

我还注意到您正在向名为GetActiveUsersAndAllGroups的网址发送POST请求。我可能会选择将POST请求更改为GET请求,因为POST用于保存数据。这样做的另一个好处是,您可以将秘密作为查询字符串参数传递,在这种情况下感觉更合适:GetActiveUsersAndAllGroups?secret=true。请务必将[FromBody]更改为[FromQuery]