Ответ 1
$.post("Yourcontroller/YourAction", { FirstName : $("#txtFirstName").val(), LastName : $("#txtLastName") } ,function(data){
//do whatever with the response
});
Имена свойств ViewModel и параметр, который мы передаем, должны быть одинаковыми. Т.е.: ваша модель представления должна иметь 2 свойства, называемые 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 serialize
$.post("Yourcontroller/YourAction", $("#formId").serialize() ,function(data){
//do whatever with the response
});
EDIT: согласно комментарию
serialize
также позаботится о собственности Child. Предположим, у вас есть класс под названием Профессия, подобный этому
public class Profession
{
public string ProfessionName { set; get; }
}
И ваш PersonViewModel имеет свойство типа Profession
public class PersonViewModel
{
//other properties
public Profession Profession { set; get; }
public PersonViewModel()
{
if (Profession == null)
Profession = new Profession();
}
}
Вы получите эти данные в свой метод HttpPost Action, если вы заполните его с вашего вида.