【发布时间】:2011-12-15 03:49:53
【问题描述】:
我注意到在 NerdDinner 应用程序中,如果 ModelState 对于晚餐无效,它只会返回模型的视图:
if (ModelState.IsValid) {
...
return RedirectToAction("Details", new { id=dinner.DinnerID });
}
return View(dinner);
但是,在我的应用程序中,模型(在这种情况下为视图模型)包含多个 SelectList。这些列表此时没有实例化,因为这个视图模型只是从表单提交中填充的。在将 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 填充代码放在我的控制器中似乎没有意义。我是否应该在我的业务逻辑中创建一个公共方法,仅用于在我的视图模型上执行此类操作?
【问题讨论】: