我正在使用 asp.net mvc。我有这个动作:
[HttpPost]
public ActionResult Create(MyData myData)
{
.... // For some reason data is always empty. The attributes are all null
}
我的数据是:
public class MyData {
public string prop1 {get;set;}
public IEnumerable<int> prop2 {get;set;}
}
我这样称呼它:
var specificData = { prop1: 'abc', prop2: [1,2,3] }
$.ajax({
type: 'POST',
dataType: 'json',
url: '/MyController/Create',
data: { myData: specificData }, //data contains the same attributes as MyData class
success: function (data, b,c,d) {
alert("success!");
},
error: function (data, b, c, d) {
alert('fail');
}
});
问题是在 Create 操作中,“数据”变量被实例化,但它的属性都是空的。难道我做错了什么?
更新
根据@Rory McCrossan,我通过使用data: specificData
而不是data: { myData: specificData }
. 但现在我在不同的地方遇到了这个问题。与 MyData 类相关的序列化问题,因为现在我使用的是更复杂的类: public class Person { public string name{get;set;} }
public class MyData {
public string prop1 {get;set;}
public IEnumerable<Person> prop2 {get;set;}
}
具体数据是:
var specificData = { prop1: 'abc',
prop2: [
{name:'a'},
{name:'b'},
{name:'c'}]
};
在操作中,myData.prop2.ElementAt(0).name 为空。现在有什么问题?