私はasp.netmvcを使用しています。私はこの行動を起こします:
[HttpPost]
public ActionResult Create(MyData myData)
{
.... // For some reason data is always empty. The attributes are all null
}
MyDataは次のとおりです。
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」変数がインスタンス化されているが、その属性がすべてnullであるということです。私は何か間違ったことをしていますか?
UPDATE
@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;}
}
そしてspecificDataは:
var specificData = { prop1: 'abc',
prop2: [
{name:'a'},
{name:'b'},
{name:'c'}]
};
アクションでは、myData.prop2.ElementAt(0).nameはnullです。今何が問題なのですか?