【发布时间】:2017-01-30 20:43:48
【问题描述】:
当我尝试使用 DropDownListFor 并指向一个选择列表时,我遇到了这个错误“没有 IEnumerable 类型的 ViewData 项具有键 'StatusOptions'”
我知道已经有很多关于此的问题,但没有一个能解决我的问题。
假设我正在实施一个下拉列表作为基于任务状态的过滤器。所以FilterView对应FilterModel,但是控制器是一个更通用的PageController,对应PageModel,所以我不能有模型中包含的状态列表而不是ViewBag或ViewData。
我也不想硬编码视图中的状态,因为它们有外部服务支持。
这就是我现在正在做的事情:
public class FilterModel
{
public string SelectedStatus {get;set;}
}
在我的页面控制器中:
public Result ListTasks()
{
...
ViewBag.StatusOptions = new SelectList (
new[] { "New", "Pending", "Completed"}.Select(x => new SelectListItem { Value = x, Text = x }),
"Value",
"Text"
);
...
}
在我看来:
Html.DropDownListFor(model => model.SelectedStatus, (IEnumerable<SelectListItem>)ViewBag.StatusOptions)
我也尝试将其强制转换为 SelectList 或使用 ViewData['StatusOptions'],但均无效。
【问题讨论】:
标签: c# asp.net-mvc