如何使用ajax将嵌套的json对象发送到mvc控制器

我正在研究ASP.NET MVC应用程序。 我在c#中有以下视图模型:

public class ContactModel { public string Address { get; set; } public string City { get; set; } public string State { get; set; } } public class PersonModel { public ContactModel Contact; public PersonModel() { Contact = new ContactModel(); } public string FirstName { get; set; } public string LastName { get; set; } public string Profession { get; set; } } 

现在我在客户端有相同的json模型,我想发布到服务器。 我正在使用以下jquery ajax:

 $.ajax({ url: "address to controller", type: "post", data: JSON.stringify(data), contentType: "application/json", success: function () { alert("data saved successfully"); } }); 

但只有PersonModel属性被映射,但Contact属性为null。 任何人都可以告诉我我错过了什么?

你需要将你的字符串格式化为正确的json –

假如你的模特是 –

 public class ContactModel { public string Address { get; set; } public string City { get; set; } public string State { get; set; } } public class PersonModel { public ContactModel Contact { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Profession { get; set; } } 

然后你AJAX Post应该是这样的 –

  

然后输出将是 –

在此处输入图像描述

创建ContactModel的实例,并在创建PersonModel实例后将其分配给PersonModel下的联系人。 如果需要任何澄清,请告诉我

如果你使用@html helper属性,那么form.serialize()方法将绑定所有属性,否则如果你使用像这样的html元素,则将它们的name属性赋值为model属性。