asp.net-mvc – 具有SelectList(s)最佳实践的ASP.NET MVC ViewModel
发布时间:2020-05-24 01:05:09 所属栏目:asp.Net 来源:互联网
导读:我注意到,在NerdDinner应用程序中,如果ModelState对于晚餐无效,它只返回模型的视图: if (ModelState.IsValid) { ... return RedirectToAction(Details, new { id=dinner.DinnerID }); } return View
|
我注意到,在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种群代码似乎没有任何意义.我应该在我的业务逻辑中创建一个公共方法,只是为了在我的视图模型上做这样的事情吗? 解决方法我个人喜欢保持简单:[HttpGet]
public Edit(int id) {
EditForm form = new EditForm();
// Populate from the db or whatever...
PopulateEditPageSelectLists(form);
return View(form);
}
[HttpPost]
public Edit(EditForm form) {
if (ModelState.IsValid) {
// Do stuff and redirect...
}
PopulateEditPageSelectLists(form);
return View(form);
}
public void PopulateEditPageSelectLists(form) {
// Get lookup data from the db or whatever.
}
如果填充选择列表的逻辑是各种各样的疯狂,可能值得移动到单独的类或任何它,但作为第一步这是最好的开始的地方. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在asp.net mvc中生成javascript文件
- 使用System.Net.Mail中的SMTP发送邮件(带附件)
- asp.net – post文件提供404页面结果,即使发布的文件在maxR
- asp.net-mvc – .Net 4.5.1框架的maxRequestLength
- asp.net – 在web用户控件中传递int数组作为参数
- asp.net-mvc – 尝试确定在干净安装的窗口上托管应用程序的
- asp.net-mvc – 获取文件内容的绝对路径
- asp.net-mvc – ASP.NET MVC是否需要安装在我的生产Web服务
- iis-7 – 经典ASP站点请求在IIS7中随机挂起
- asp.net – Isapi过滤器无法在IIS 7上运行(在IIS 6上运行)
推荐文章
站长推荐
热点阅读
