将 ENUM 分配给下拉列表
本文关键字:下拉列表 分配 ENUM | 更新日期: 2023-09-27 18:32:30
好的,我已经查看了有关在DropDownLists
中使用ENUM
的不同网站,并且对使用自定义帮助程序将值传递到 ViewBag 然后再将它们传递给DDL
的人有点困惑。
http://blogs.msdn.com/b/stuartleeks/archive/2010/05/21/asp-net-mvc-creating-a-dropdownlist-helper-for-enums.aspx
MVC4 下拉列表中的枚举值
http://webcache.googleusercontent.com/search?q=cache:http://www.ninjanye.co.uk/2012/01/creating-dropdown-list-from-enum-in.html
我在整个网站上使用了各种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;
在对此事进行广泛调查后,按照我想要的方式进行并不是一项简单的任务。因此,我添加了帮助程序类来处理下拉列表中的ENUM值。
我看过的一些示例将模型与 ENUM 帮助程序结合使用,但由于我不需要它,我发现下面的视频教程非常有用。下面的视频是我当前的实现,它按我的预期工作。
使用下拉列表绑定枚举类型第 1 部分
使用下拉列表绑定枚举类型第 2 部分
使用下拉列表绑定枚举类型第 3 部分