Я заметил, что в приложении NerdDinner, если ModelState недействителен для обеда, он просто возвращает представление для модели:
if (ModelState.IsValid) {
...
return RedirectToAction("Details", new { id=dinner.DinnerID });
}
return View(dinner);
Однако в моем приложении модель (модель представления в этой ситуации) содержит несколько SelectLists. Эти списки не создаются в этот момент, потому что эта модель представления была просто заполнена из представления формы. Каков рекомендуемый способ повторного заполнения этих списков выбора, прежде чем отправлять их обратно пользователю?
Это то, что я хочу, чтобы мой контроллер выполнял:
public ActionResult Save(MyModel model)
{
if (ModelState.IsValid)
{
businessClass.Save(model);
return RedirectToAction("Index", "Home");
}
// This won't work because model has uninstantiated SelectLists
return View("MyView", model);
}
Я не хочу отправлять модель в свою бизнес-логику, если ModelState недействителен, но, похоже, не имеет смысла вставлять код популяции SelectList в мой контроллер. Должен ли я создать публичный метод в моей бизнес-логике исключительно для того, чтобы делать такие вещи на моей модели (-ях) просмотра?