asp.net-mvc – 如何使用枚举值填充下拉列表?
发布时间:2020-12-15 22:26:00 所属栏目:asp.Net 来源:网络整理
导读:我有一个枚举我的视图模型的属性之一.我想显示一个下拉列表,其中包含枚举的所有值.我可以使用以下代码使用它. 我想知道是否有一种简单的方法从枚举转换为IEnumerable?我可以手动执行,如下例所示,但是当我添加新的枚举值时,代码会中断.我想我可以通过这个exa
我有一个枚举我的视图模型的属性之一.我想显示一个下拉列表,其中包含枚举的所有值.我可以使用以下代码使用它.
我想知道是否有一种简单的方法从枚举转换为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 Web表单开发混合在同一组产品中
- 密码保护IIS 7.5中的ASP.NET Web应用程序
- Webpack,asp.net核心,docker:使用dotnet调试或发布版本构建
- 如何在ASP.Net webform中使用标签?
- asp.net – 重音法语字符
- asp.net-mvc – 如何在大型asp.net mvc项目中管理路由
- asp.net-mvc – 使用表单身份验证在ASP.NET MVC上存储登录的
- asp.net – 具有2个不同域的mvc3路由
- asp.net-mvc – 如何在asp.Net MVC Razor中单击Check Box的
- asp.net – 如何在Json中使用Gson将对象类型包含在asmx web
推荐文章
站长推荐
- ASP.NET MVC 2在部分视图中禁用浏览器后退按钮的
- asp.net – web.config继承:导致XML解析错误
- asp.net – 在后面的代码中注入标记
- 在不加载实体的情况下更新ASP.NET MVC EF4中的相
- asp.net – ASPNET WebForms服务器控件在Page_Lo
- asp.net-mvc – 使用ViewData或不使用ViewData
- 在ASP.NET中的JQuery FullCalendar实现
- asp.net-mvc – ASP.NET MVC3 View模型不是null,
- 如何在asp.net中使用javascript为下拉列表框设置
- ASP.Net MVC 3控制器操作和打开新窗口
热点阅读