asp.net-mvc – 如何使用枚举值填充下拉列表?
发布时间:2020-05-25 08:18:30 所属栏目:asp.Net 来源:互联网
导读:我有一个枚举我的视图模型的属性之一.我想显示一个下拉列表,其中包含枚举的所有值.我可以使用以下代码使用它. 我想知道是否有一种简单的方法从枚举转换为IEnumerable?我可以手动执行,如下例所示,但是当我添加新的枚举值时,代码会中断.我想我可以通过这个exam
|
我有一个枚举我的视图模型的属性之一.我想显示一个下拉列表,其中包含枚举的所有值.我可以使用以下代码使用它. 我想知道是否有一种简单的方法从枚举转换为IEnumerable?我可以手动执行,如下例所示,但是当我添加新的枚举值时,代码会中断.我想我可以通过这个example的反射来做到这一点,但是还有其他方法可以做到这一点吗? public enum Currencies
{
CAD,USD,EUR
}
public ViewModel
{
[Required]
public Currencies SelectedCurrency {get; set;}
public SelectList Currencies
{
List<Currencies> c = new List<Currencies>();
c.Add(Currencies.CAD);
c.Add(Currencies.USD);
c.Add(Currencies.EUR);
return new SelectList(c);
}
}
解决方法我正在使用一个助手,我发现 here用一个通用的枚举类型填充我的SelectLists,我做了一些修改来添加所选的值,但这是它的样子:public static SelectList ToSelectList<T>(this T enumeration,string selected)
{
var source = Enum.GetValues(typeof(T));
var items = new Dictionary<object,string>();
var displayAttributeType = typeof(DisplayAttribute);
foreach (var value in source)
{
FieldInfo field = value.GetType().GetField(value.ToString());
DisplayAttribute attrs = (DisplayAttribute)field.
GetCustomAttributes(displayAttributeType,false).FirstOrDefault()
items.Add(value,attrs != null ? attrs.GetName() : value.ToString());
}
return new SelectList(items,"Key","Value",selected);
}
关于它的好处是它将DisplayAttribute读作标题而不是枚举名称. (如果您的枚举包含空格或您需要本地化,那么它会让您的生活更轻松) 因此,您需要将Display attirubete添加到您的枚举中,如下所示: public enum User_Status
{
[Display(Name = "Waiting Activation")]
Pending,// User Account Is Pending. Can Login / Can't participate
[Display(Name = "Activated" )]
Active,// User Account Is Active. Can Logon
[Display(Name = "Disabled" )]
Disabled,// User Account Is Diabled. Can't Login
}
这就是你在视图中使用它们的方式. <%: Html.DropDownList("ChangeStatus",ListExtensions.ToSelectList(Model.statusType,user.Status))%>
Model.statusType只是User_Status类型的枚举对象. 就是这样,ViewModel中不再有SelectLists.在我的例子中,我正在我的ViewModel中重新生成一个枚举,但你可以直接在你的视图中引用枚举类型.我只是这样做,让一切都干净漂亮. 希望这很有帮助. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 我们可以为ASP.NET MVC 5中的角色个性化会话
- asp.net-mvc – ASP.NET MVC – 在ActionFilter中访问控制器
- WPF 增加合计一栏
- asp.net-web-api – WebAPI 2.2不支持substringof函数
- asp.net-mvc-3 – MVC-3和Html.Serialize(ASP.NET 4,MVC3)
- Asp.NEt邮箱验证修改密码通过邮箱找回密码功能
- asp.net – web.config allowDefinition = MachineToApplic
- ASP.Net RSS提要
- asp.net-mvc – MVC – 编辑对象列表
- ASP.NET MVC查看用户控件 – 如何设置ID?
推荐文章
站长推荐
热点阅读
