Допустим, у вас есть класс (модель), определенный следующим образом:
public class MyModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
В вашем контроллере у вас может быть действие под названием Create, например:
[HttpGet]
public ViewResult Create()
{
MyModel sampleModel = new MyModel();
return View(sampleModel);
}
[HttpPost]
public ActionResult Create(MyModel sampleModel)
{
if (ModelState.IsValid)
{
TempData["Error"] = "There were errors. Please correct the problem and submit again";
return View(sampleModel);
}
// At this point everything is fine and you can access data in your sampleModel
if (sampleModel.Age >= 16)
{
return RedirectToAction("LegalAccess");
}
else
{
TempData["Error"] = "You must be 16 or over to access this site";
return RedirectToAction("AgeRestriction");
}
}
Когда вы создаете строго типизированное представление, которое использует MyModel в качестве модели, вы можете определить его примерно так:
@model MyModel
@{
Layout = "~/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
<br />
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
<br />
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
<input type="submit" value="Submit" />
}
Когда вы отправляете эту форму, связыватель модели в фоновом режиме копирует данные из этой формы, используя Request.Form, в объект типа MyModel, который он создает в фоновом режиме. Этот новый объект передается действию, которое обрабатывает метод HTTP POST. При этом вы получаете строго типизированный объект и вам не нужно беспокоиться о порядке элементов в FormCollection.
Надеюсь, я помог ответить на ваш вопрос.
КСТАТИ. Я написал это без Visual Studio, поэтому я надеюсь, что нет ошибок. : -)