Javascript ASP.NET Core中在复杂类型上绑定列表的模型

Javascript ASP.NET Core中在复杂类型上绑定列表的模型,javascript,c#,asp.net-core,asp.net-core-mvc,Javascript,C#,Asp.net Core,Asp.net Core Mvc,我在ASP.NET核心MVC中的模型绑定方面遇到问题。我有这个端点,当从Javascript调用它时,它会被命中,但是postData总是空的 [HttpPost("/somepost")] public string SomePost([FromBody] PostData postData) { return "Got It!"; } public class PostData { public int ID

我在ASP.NET核心MVC中的模型绑定方面遇到问题。我有这个端点,当从Javascript调用它时,它会被命中,但是postData总是空的

    [HttpPost("/somepost")]
    public string SomePost([FromBody] PostData postData)
    {
        return "Got It!";
    }

    public class PostData
    {
        public int ID { get; set; }
        public string[] ListOrArray { get; set; } // Doesn't matter if this ends up a List or an Array
    }
正在从$点击此端点。单击函数:

$('img.some-image').click(function () {
    array = ['sample data', 'some more'];

    data = {
        ID: 1,
        ListOrArray: array 
    };

    $.ajax({
        type: 'POST',
        url: '/somepost',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: data,
        success: function (result) {
            console.log('Received: ');
            console.log(result);
        }
    });
});
我猜问题在于模型绑定,但我不确定。我见过使用小写Javascript对象属性名的示例,但这对我来说没有任何改变

我还必须从帖子中删除[ValidateAntiForgeryToken],但我更愿意将其重新添加。我猜我必须将令牌添加到GET请求中,以便提交帖子,但我还不知道如何做到这一点。但我认为这与我的问题无关


我一直在寻找答案和例子,但没有一个对我有用。ASP.NET核心是相当新的,所以没有太多。我使用的是1.1.0版。

您已经设置了
contentType:json
,但是您正在发送一个
普通对象
,您需要发送
json对象

要将
对象
转换为
json对象
,可以使用
json.stringify

$.ajax({
    type: 'POST',
    url: '/somepost',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(data),
    success: function (result) {
      console.log('Received: ');
      console.log(result);
   }
});

您已经设置了
contentType:json
,但是您正在发送一个
普通对象
,您需要发送
json对象

要将
对象
转换为
json对象
,可以使用
json.stringify

$.ajax({
    type: 'POST',
    url: '/somepost',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(data),
    success: function (result) {
      console.log('Received: ');
      console.log(result);
   }
});

datatype
与发布的内容无关(它指定服务器发回的类型)。我想你的意思是说你已经设置了
contentType:'json
,但是…@StephenMuecke确实是。
datatype
与发布的内容无关(它指定了服务器发回的类型)。我想你的意思是说你已经设置了
contentType:'json
'但是…@StephenMuecke是的。要添加令牌,只需包括
\uuuuuuu RequestVerificationToken:$('input[name=“\uu RequestVerificationToken”]).val()
在“数据对象”中要添加令牌,只需包含
\uuu RequestVerificationToken:$('input[name=“\uu RequestVerificationToken”]”)。val()