JSON没有';无法通过MVC进行解析

本文关键字:MVC 没有 JSON | 更新日期: 2023-09-27 18:20:16

我有以下C#:

型号:

namespace WebInventory.Models
{
    [DataContract]
    public class PostbackList
    {
        [DataContract]
        public class Field
        {
            public int ID;
            public string Name;
            public int DataTypeID;
            public bool Checked;
        }
        [DataMember]
        public int TypeID;
        [DataMember]
        public IList<Field> Fields;
        [DataMember]
        public IList<IList<string>> Values;
        #region Non DataMember
        public IList<int> UsedFieldsID;
        #endregion
    }
}

控制器:

public class ListController : JsonController
{
    [HttpPost]
    public ActionResult GetList(PostbackList data)
    {
        <...>
    }
}

我发送以下JSon对象:

{"TypeID":16,"Fields":[{"ID":42,"Name":"","DataTypeID":0,"Checked":true},{"ID":43,"Name":"","DataTypeID":0,"Checked":true},{"ID":44,"Name":"","DataTypeID":0,"Checked":true}],"Values":null}

使用:

    $.ajax({
        url: url
        , type: 'POST'
        , dataType: 'json'
        , contentType: 'application/json; charset=utf-8'
        , data: JSON.stringify(parameter)
        , xhrFields: {
            withCredentials: true
        }
    })
    .done(function (data) {
        fillTemplate(data);
    });

我在MVC GetList中设置了一个断点,在那里我看到data未初始化。我尝试使用数组而不是(I)List,但没有帮助。

我看不出怎么了。

JSON没有';无法通过MVC进行解析

我认为应该使用属性而不是字段。

我最近遇到了同样的问题,模型绑定器没有接收到我的json。

我改成了房地产。

public int ID {get; set;}

将所有字段更改为属性,如下所示。

namespace WebInventory.Models
{
    [DataContract]
    public class PostbackList
    {
        [DataContract]
        public class Field
        {
            public int ID {get; set;}
            public string Name {get; set;}
            public int DataTypeID {get; set;}
            public bool Checked {get; set;}
        }
        [DataMember]
        public int TypeID {get; set;}
        [DataMember]
        public IList<Field> Fields {get; set;}
        [DataMember]
        public IList<IList<string>> Values {get; set;}
        #region Non DataMember
        public IList<int> UsedFieldsID {get; set;}
        #endregion
    }
}