.Net Core MVC Post 参数绑定为空

.Net Core MVC Post parameter binding is null

我有一个负责 Group 实体的 MVC 控制器。

我的 [HttpPost] 方法处理新组的创建。在参数中,我尝试将请求绑定到一个简单的 GroupModel DTO。

问题是参数总是“空”。我还将 .AddNewtonsoftJson(); 添加到我的服务集合中。

组控制器

public IActionResult Create()
{
    return View();
}

[HttpPost]
public async Task<IActionResult> Create([FromBody] GroupModel group)
{
    var (result, groupId) = await _groupService.Create(group.Name, group.Roles);

    if (result.Succeeded)
    {
        return View("Index");
    }
    else
    {
        AddErrors(result);
        return Create();
    }
}

GroupModel

public class GroupModel
{
    
    public string Name { get; set; }
    public int[] Roles { get; set; }

}

JS

function create() {

    var group = new Object();
    group.name = getGroupName();
    group.roles = getSelectedRoles();

    /* Ajax request */
    $.ajax({
        url: BASE_URL + 'Group/Create',
        type: 'POST',
        data: JSON.stringify(group),
        dataType: "json",  
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            alert("success");
        },
        error: function () {
            alert("error");
        }
    });
}

我完全确定我遗漏了什么,我已经做过无数次了,但我就是想不通。

谢谢。

我想可能是group的数据格式造成的。group.name = getGroupName(); group.roles = getSelectedRoles();我给它添加了示例数据,它成功了。 这是一个有效的演示: 组控制器:

public IActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public async Task<IActionResult> Create([FromBody] GroupModel group)
        {
            return View();
        }

查看:

<button onclick="create()">Create</button>
@section scripts{ 
    <script type="text/javascript">
    function create() {

        var group = new Object();
        group.name = "a";
        group.roles = new Array();
        group.roles[0] = 1;
        group.roles[1] = 2;
    /* Ajax request */
        $.ajax({
            url: 'Create',
            type: 'POST',
            data: JSON.stringify(group),
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                alert("success");
            },
            error: function () {
                alert("error");
            }
        });
        
    }
    </script>
}

结果: