asp.net-mvc – 如何本地化枚举并使用类似于Html.SelectListFor
发布时间:2020-12-16 07:09:10 所属栏目:asp.Net 来源:网络整理
导读:假设我得到了以下类和枚举: public class MyModel{ [DisplayName("Min egenskap")] public MyEnum TheProperty {get;set;}}public enum MyEnum{ [DisplayName("Inga fr?n Sverige")] OneValue,[DisplayName("Ett annat v?rde")] AnotherValue} 上面的代码不
假设我得到了以下类和枚举:
public class MyModel { [DisplayName("Min egenskap")] public MyEnum TheProperty {get;set;} } public enum MyEnum { [DisplayName("Inga fr?n Sverige")] OneValue,[DisplayName("Ett annat v?rde")] AnotherValue } 上面的代码不起作用,因为DisplayNameAttribute不能在枚举上使用.还有其他可以使用的属性吗? 我想要做的是使用Html.SelectListFor(m => m.TheProperty)之类的东西生成一个漂亮的html选择标签.该列表将在生成期间使用DisplayNameAttribute或类似属性. 通缉结果: <select name="TheProperty"> <option value="OneValue">Inga fr?n Sverige</option> <option value="AnotherValue" selected="selected">Ett annat v?rde</option> </select> 解决方法
如何执行此操作的示例是使用枚举上的[Description]属性:
public enum DaysOfWeek { [Description("Monday")] Monday = 1,[Description("Tuesday")] Tuesday = 2 } 然后创建这个EnumerationHelper类,它将允许您获取枚举的Description属性: public static class EnumerationHelper { //Transforms an enumeration description into a string public static string Description<TEnum>(this TEnum enumObject) { Type type = enumObject.GetType(); MemberInfo[] memInfo = type.GetMember(enumObject.ToString()); if(memInfo != null && memInfo.Length > 0) { DescriptionAttribute[] attributes = (DescriptionAttribute[])memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),false); if (attributes.Length > 0) { return attributes[0].Description; } } return enumObject.ToString(); } } 然后,您可以查询您的枚举类以获取值和描述,然后构建一个SelectList.您必须在此类中引用EnumerationHelper: var listOfDaysOfWeek = (from DaysOfWeek d in Enum.GetValues(typeof(DaysOfWeek)) select new { ID = d,Description = d.Description() }); viewModel.selectListDaysOfWeek = new SelectList(listOfDaysOfWeek,"ID","Description"); 最后在你看来: <%: Html.DropDownListFor(m => m.DayOfWeek,Model.DaysOfWeek) %> 我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用ASP.NET MVC,Linq To SQL和StructureMa
- asp.net-mvc-3 – 将模型数据从Knockout发送回MVC 3
- asp.net-mvc – MVC数据类型货币触发器数字小键盘
- asp.net – 使用ASP:文本框作为
- asp.net-mvc – 如何在ASP.NET MVC中实现分页?
- asp.net – compilation debug =“true”和发布模式“relea
- asp.net-mvc – 刷新IdentityServer4客户端中的访问令牌
- entity-framework – 如何找到UIHInt属性的target属性?
- asp.net-mvc – MVC3 AntiForgeryToken打破了Ajax登录
- asp.net – 黑客正试图在我们的某个网站上做某事