【发布时间】:2012-11-14 08:48:55
【问题描述】:
我正在使用 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 动作中,“data”变量被实例化了,但它的属性都是空的。我做错了吗?
更新
根据@Rory McCrossan 的说法,我使用data: specificData 而不是data: { myData: specificData } 来解决它。但现在我在不同的地方遇到了这个问题。与 MyData 类相关的序列化问题,因为现在我使用的是更复杂的类:
公共类人{
公共字符串名称{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 为空。 现在怎么了?
【问题讨论】:
-
您能否发布您的
data变量的内容。此外,MyData类的属性列表也会有所帮助。 -
我认为问题是使用可变数据,请您更改一下
-
@Rory McCrossan:我更新了我的代码。
标签: javascript jquery asp.net asp.net-mvc-3