将复杂表单序列化为Json并在mvc操作中反序列化它

时间:2014-07-24 20:38:24

标签: json serialization deserialization

我正在尝试将表单序列化为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并使用所有数组和对象对其进行反序列化?

0 个答案:

没有答案