好的,我已经查看了有关ENUM
in使用的不同网站,DropDownLists
并且对使用自定义助手将值传递到 ViewBag 的人感到有些困惑,然后再将它们传递给DDL
.
我在Html.DropDownList
整个网站上使用了各种帮助程序,但以前没有使用ENUM
过DDL
。我宁愿不将它们硬编码到视图中,因为我正在使用switch
语句来控制选择选项时发生的情况filter
。所以想知道是否有一种简单的方法来实现这一点,而无需创建新的助手来纠正这种情况。
这是我到目前为止所拥有的(减去不必要的代码):
public enum OrderFilter
{
All,
Live,
InProgress,
Invoiced,
Outstanding
}
public ActionResult Index(OrderFilter? orderFilter)
{
ViewBag.FilterOptions = orderFilter;
}
@Html.DropDownList("orderFilter", (IEnumerable<SelectListItem>)ViewBag.FilterOptions, "Filter Options")
如果我像上面那样做,响应是“没有类型为' IEnumerable<SelectListItem>
'的 ViewData 项目具有键' orderFilter
'”。
我正在寻找类似于以下代码的东西,但不使用自定义助手(如果可能)。
@Html.DropDownList("misc", (IEnumerable<SelectListItem>)ViewBag.Misc)
var users = _userRepository.GetData().Select(u => new SelectListItem
{
Value = u.Id.ToString(CultureInfo.InvariantCulture),
Text = u.Details
});
ViewBag.Administrators = users;