在 MVC 应用程序中,我有一些 DropDownLists。在我的控制器中,我创建了IEnumerable<SelectListItem>
s 并将它们传输到我的视图。不幸的是,如果出现验证错误,我需要重新创建这些列表,否则视图渲染会失败。
在我正在做的控制器操作方法中:
var possibilities = _repo.Objects.Select(o=>new SelectListItem(...));
viewmodel.Possibilities = possibilities;
return View(viewmodel);
视图模型的 Possibilities 属性定义如下:
IEnumerable<SelectListItem> Possibilities { get; set; }
在我看来,我访问它:
@Html.DropDownListFor(vm=>vm.ThePossibility, vm.Possibilities)
问题是当表单发布操作方法被调用时,传递给它的视图模型有一个 null for Possibilities
,所以当我调用时:
if(!ModelState.IsValid)
return View(model);
视图不会被渲染。
我理解为什么 post 操作方法的属性为空,但纠正这个问题的最佳方法是什么?我宁愿不重新初始化这些列表。
谢谢。