在MVC應用程序中,我有一些DropDownLists。在我的控制器中,我創建了IEnumerable<SelectListItem>
,並將它們轉移到我的視圖中。不幸的是,如果有驗證錯誤,我需要重新創建這些列表,否則視圖渲染失敗。SelectListItem列表應該去哪裏?
在控制器的操作方法我做:
var possibilities = _repo.Objects.Select(o=>new SelectListItem(...));
viewmodel.Possibilities = possibilities;
return View(viewmodel);
視圖模型具有像這樣定義的可能性屬性:
IEnumerable<SelectListItem> Possibilities { get; set; }
在我看來,我訪問:
@Html.DropDownListFor(vm=>vm.ThePossibility, vm.Possibilities)
問題是,當調用表單post操作方法時,視圖模型傳遞給它有一個空的Possibilities
,所以當我打電話時:
if(!ModelState.IsValid)
return View(model);
該視圖不會呈現。
我明白爲什麼後操作方法中的propery爲null,但糾正此問題的最佳方法是什麼?我寧願不重新初始化那些列表。
謝謝。
是的,這是有道理的,我應該想到這一點。爲了自動發生這種情況,我需要返回一些視圖狀態。謝謝。 – zmbq