Ниже немного расширен пример Скотту. Как объясняет @SLaks, при получении POST MVC попытается создать новый объект MyPostName и сопоставить его свойства с полями from. Он также обновит свойство ModelState с результатами сопоставления и проверки.
Когда действие возвращает представление, оно также должно предоставить модель для него. Тем не менее, представление не должно использовать ту же модель. Фактически, представление может быть строго типизировано с другой моделью, которая содержит расширенные данные, например, она может иметь свойства навигации, связанные с внешними ключами в таблице БД; и в этом случае логика для сопоставления модели POST с моделью представления будет содержаться в действии POST.
public class MyGetModel
{
string FullName;
List<MyGetModel> SuggestedFriends;
}
public class MyPostModel
{
string FirstName;
string LastName;
}
//GET: /Customer/Create
public ActionResult Create()
{
MyGetModel myName = new MyGetModel();
myName.FullName = "John Doe"; // Or fetch it from the DB
myName.SuggestedFriends = new List<MyGetModel>; // For example - from people select name where name != myName.FullName
Model = myName;
return View();
}
//POST: /Customer/Create
[HttpPost]
public ActionResult Create(MyPostModel newName)
{
MyGetModel name = new MyGetModel();
name.FullName = newName.FirstName + "" + newName.LastName; // Or validate and update the DB
return View("Create", name);
}