Изменение свойств ViewModel в действии POST
У меня есть это действие POST:
[HttpPost]
public ActionResult GetReport(GetReportModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
return View("GetReport", new GetReportModel()
{
Identifier = "test",
Permission = true
});
}
Когда я отправляю свою форму, и это действие выполняется, в результирующем представлении нет никаких изменений. Я имею в виду,TextBox
заIdentifier
не имеет строкового значения "test", которое я установил в действии. Но если я уберуModelState
, представление покажет новое значение:
[HttpPost]
public ActionResult GetReport(GetReportModel model)
{
if (!ModelState.IsValid)
{
return View();
}
ModelState.Remove("Identifier");
ModelState.Remove("Permission");
return View("GetReport", new GetReportModel()
{
Identifier = "test",
Permission = true
});
}
Я не понимаю, почему это происходит? И почему каждый возвращает свою модель в представление, если оно имеет недопустимое состояние модели? Например, шаблон проекта по умолчанию от Microsoft имеет такой код:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
return RedirectToLocal(returnUrl);
}
// Why do they pass the model object to the view
// if it will be there anyway from post data?
return View(model);
}