我正在尝试使用AJAX调用将JSON字符串发送到控制器。除了JSON字符串中的嵌套对象没有映射到控制器端的嵌套对象之外,一切似乎都正常工作。这是我的代码示例。
Class MyClass1{
string prop1;
string prop2;
string prop3;
MyClass2 prop4;
}
Class MyClass2{
string prop5;
string prop6;
string prop7;
}
这就是我试图映射的方式。
$("#btnSave").click(function () {
$.ajax({
type: 'POST',
url: '@Url.Action("Member", "Application")',
data: { applicantModel:getAppData(), buttonText: $("#btnSave").val(), isDeleted: $("#hdnDeleted").val() },
dataType: "json",
success: function (data) {
},
error: function (xhr, ajaxOptions, error) {
}
});
})
getAppData = function () {
var fields = {
"prop1": "a",
"prop2": "b",
"prop3": "c",
"prop4":{
"prop5": "d",
"prop6": "e",
"prop7": "f"
}
}
return fields;
}
和我的控制器方法......
<HttpPost()>
Function Member(applicantModel As ApplicantModels, buttonText as String, isDeleted as String) As ActionResult
//do some stuff with the data
Return View(applicantModel)
End Function
当我在控制器内部时,我的MyClass1对象被正确映射但是prop4数据没有被映射。我已尝试过其他线程的几个想法,我已经尝试过JSON.Stringify()JSON,然后在Ajax调用中发送它。我完全没有想法。会爱一些帮助!
提前致谢!
答案 0 :(得分:2)
您需要使用public
和set
访问者创建视图模型属性get
,以便DefaultModel活页夹可以从发布的表单数据中设置这些属性的值。
public class MyClass1
{
public string prop1 { get; set; }
public string prop2 { get; set; }
public string prop3 { get; set; }
public MyClass2 prop4 { get; set; }
}
public class MyClass2
{
public string prop5 { get; set; }
public string prop6 { get; set; }
public string prop7{ get; set; }
}
通过此更改,您的代码应该可以正常工作。