Ajax 调用没有将字符串传递给控制器

Ajax call doesn't pass string to controller

我正在尝试将字符串传递给 asp.net 核心 3.1 控制器中的 IActionResult 函数。

Ajax:

 $(function () {
        $('#ddlUsers').change(function () {
            $.ajax({
                url: '@Url.Action("GetUserInfoPartial", "UserInfo")',
                method: 'POST',
                data: { userId: 'test' },
                contentType: 'application/json',
                dataType: 'html'
            }).done(function (r) {
                $('#partialID').html(r);
            });
        });
    });

C#:

[HttpPost]
public IActionResult GetUserInfoPartial(string userId)
{         
     return PartialView("_UserPartial", userId);
}

GetUserInfoPartial 中的断点命中,但 userId 始终为空。 我错过了什么?

你可以尝试删除'application/json',但有时会很棘手,取决于网络版本

         $.ajax({
                url: '@Url.Action("GetUserInfoPartial", "UserInfo")',
                method: 'POST',
                data:  { userId: 'test' },
                success: function (r) {
                $('#partialID').html(r);
            });

如果运气不好还有另外两种方法

简单的方法 - 使用 Get 而不是 Post

$.ajax({
                url: '@Url.Action("GetUserInfoPartial", "UserInfo")'+'test',
                method: 'GET',
                success: function (r) {
                $('#partialID').html(r);
            });

动作

[HttpGet("{userId}")]
public IActionResult GetUserInfoPartial(string userId)

更难的一个,如果你想使用'application/json'内容类型

创建视图模型

public  class ViewModel
{
 public string UserId {get; set;}
}

ajax

          $.ajax({
                url: '@Url.Action("GetUserInfoPartial", "UserInfo")',
                method: 'POST',
                data: JSON.stringify( { userId: 'test' }),
                contentType: 'application/json',
                success: function (r) {
                $('#partialID').html(r);
            });

动作

[HttpPost]
public IActionResult GetUserInfoPartial([FromBody] ViewModel model)
{      
      return PartialView("_UserPartial", model.UserId);
}   

您可以删除 'application/json' 和 dataType: 'html' 然后它将正常工作。 $.ajax({ url: '@Url.Action("GetUserInfoPartial", "UserInfo")', 方法:'POST', 数据:{ userId: 'test' }, 成功:函数(r){ $('#partialID').html(r); });