我有以下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
}
}
的Controler:
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,但它没有帮助。
我看不出有什么不对。
答案 0 :(得分:3)
我认为你应该使用属性而不是字段。
我最近遇到了同样的问题,模型活页夹没有拿起我的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
}
}