Я использую ASP.NET MVC 2 и вот в чем проблема. Моя модель просмотра выглядит примерно так. Он включает в себя некоторые поля, которые редактируются пользователем, а другие - для отображения. Вот простая версия
public class MyModel
{
public decimal Price { get; set; } // for view purpose only
[Required(ErrorMessage="Name Required")]
public string Name { get; set; }
}
Контроллер выглядит примерно так:
public ActionResult Start(MyModel rec)
{
if (ModelState.IsValid)
{
Repository.SaveModel(rec);
return RedirectToAction("NextPage");
}
else
{
// validation error
return View(rec);
}
}
Проблема в том, что когда возникает ошибка проверки и я вызываю View (rec), я не уверен, что лучший способ заполнить мою модель представления значениями, которые отображаются только.
Старый способ сделать это, где я передаю коллекцию форм, я бы сделал что-то вроде этого:
public ActionResult Start(FormCollection collection)
{
var rec = Repository.LoadModel();
UpdateModel(rec);
if (ModelState.IsValid)
{
Repository.SaveModel(rec);
return RedirectToAction("NextPage");
}
else
{
// validation error
return View(rec);
}
}
Но при этом я получаю сообщение об ошибке UpdateModel(rec)
: Не удалось обновить модель типа «MyModel».
Есть идеи?