我正在尝试将表单序列化为Json并将其与$ .post一起发布到MVC操作并将其反序列化为模型。它使用简单的表单(具有非复杂属性的表单)。但是当我有复杂的属性或数组时,它不起作用。
以下是型号:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public Contact Contact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public string Tel { get; set; }
}
在视图中,我使用此Js函数来序列化模型:
function serializeForm() {
return JSON.stringify($("#myForm").serializeObject());
}
使用此Jquery命令,我将其发布到操作
$.post(url, { person: serializeForm() },
function (data) {
}
);
在操作中,我使用Newtonsoft helper来反序列化发布的字符串
[HttpPost]
public ActionResult EditPerson(string person)
{
var model = JsonConvert.DeserializeObject<Person>(person);
return null;
}
反序列化后,“Contact”属性为null。 我尝试使用JavaScriptSerializer进行反序列化,但它不起作用。 有没有办法将复杂的表单序列化为json并使用所有数组和对象对其进行反序列化?