我使用MVC来验证一些HTML文本框的网页上,例如在我的控制器有ASP.NET MVC的验证和意见
if (String.IsNullOrEmpty(name))
{
ModelState.AddModelError("name", "You must specify a name.");
}
if (ViewData.ModelState.IsValid)
{
return RedirectToAction("Index");
}
返回查看();
问题在这里,如果验证失败,它返回视图失败(“添加”)原因控制器不处理返回view()视图,一个选项将使用RedirectToView(“viewname”);并且这将工作得很好,除非它没有通过验证AddModelError的东西(“就好像是第一次加载页面一样”)。
我可以通过在返回View()之前重复用于填充SelectList框的代码来获得此代码。
这样
ViewData["rooms"] = new SelectList(Villa.intList(10));
ViewData["sleeps"] = new SelectList(Villa.intList(20));
ViewData["accomodationType"] = new SelectList(accomodationList, "accomodationId", "accomodationType");
ViewData["regionName"] = new SelectList(regionList, "regionId", "regionName");
return View();
工作正常,但是,我认为这是一个更好的办法,而不是重复的代码块,没有人知道返回重定向视图,并传递给它的模型误差的任何方式?
在此先感谢,希望它能提供某种意义。
尚未测试,但它是有道理的,不知道你可以做一个ActionResult方法之外!谢谢 – Tablet 2008-11-26 15:14:39