如何从 ASP.NET MVC 中的枚举创建下拉列表? [英] How do you create a dropdownlist from an enum in ASP.NET MVC?
本文介绍了如何从 ASP.NET MVC 中的枚举创建下拉列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用 Html.DropDownList
扩展方法,但不知道如何通过枚举使用它.
I'm trying to use the Html.DropDownList
extension method but can't figure out how to use it with an enumeration.
假设我有一个这样的枚举:
Let's say I have an enumeration like this:
public enum ItemTypes
{
Movie = 1,
Game = 2,
Book = 3
}
如何使用 Html.DropDownList
扩展方法使用这些值创建下拉列表?
How do I go about creating a dropdown with these values using the Html.DropDownList
extension method?
或者我最好的办法是简单地创建一个 for 循环并手动创建 Html 元素?
Or is my best bet to simply create a for loop and create the Html elements manually?
推荐答案
对于 MVC v5.1 使用 Html.EnumDropDownListFor
@Html.EnumDropDownListFor(
x => x.YourEnumField,
"Select My Type",
new { @class = "form-control" })
<小时>
对于 MVC v5 使用 EnumHelper
@Html.DropDownList("MyType",
EnumHelper.GetSelectList(typeof(MyType)) ,
"Select My Type",
new { @class = "form-control" })
<小时>
对于 MVC 5 及更低版本
我将 Rune 的答案卷成扩展方法:
For MVC 5 and lower
I rolled Rune's answer into an extension method:
namespace MyApp.Common
{
public static class MyExtensions{
public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
where TEnum : struct, IComparable, IFormattable, IConvertible
{
var values = from TEnum e in Enum.GetValues(typeof(TEnum))
select new { Id = e, Name = e.ToString() };
return new SelectList(values, "Id", "Name", enumObj);
}
}
}
这允许你写:
ViewData["taskStatus"] = task.Status.ToSelectList();
通过使用MyApp.Common
这篇关于如何从 ASP.NET MVC 中的枚举创建下拉列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文