解决方法
$.post("Yourcontroller/YourAction",{ FirstName : $("#txtFirstName").val(),LastName : $("#txtLastName") },function(data){ //do whatever with the response });
您的viewmodel我们传递的属性名称和参数应该相同。即:您的视图模型应该有两个名为FirstName和LastName的属性,如他的
public class Personviewmodel { public string FirstName { set;get;} public string LastName { set;get;} // other properties }
而Post操作方法应该接受Personviewmodel类型的参数
[HttpPost] public ActionResult YourAction(Personviewmodel model) { //Now check model.FirstName }
或者,如果您的视图强烈类型到Personviewmodel,您可以使用jQuery序列化方法将序列化表单发送到操作方法
$.post("Yourcontroller/YourAction",$("#formId").serialize(),function(data){ //do whatever with the response });
编辑:根据评论
Serialize也将照顾Child属性。假设你有一个这样的职业称为职业
public class Profession { public string ProfessionName { set; get; } }
public class Personviewmodel { //other properties public Profession Profession { set; get; } public Personviewmodel() { if (Profession == null) Profession = new Profession(); } }