我使用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