有这样一个学科枚举类型:

/// 学科
/// </summary>
public enum Subject
{
None = ,
[Description("语文")]
Chinese = , [Description("数学")]
Mathematics = , [Description("英语")]
English = , [Description("政治")]
Politics = , [Description("物理")]
Physics = , [Description("化学")]
Chemistry = , [Description("历史")]
History = , [Description("地理")]
Geography = , [Description("生物")]
Biology =
}

这里使用了一个Description特性,目的是为了在一个DropDownList列表中绑定文本数据。

这里使用了一个扩展方法,目的为了返回一个Value和Text的数据列表,上方法:

/// 枚举辅助类
/// </summary>
public static class EnumHelper
{
/// <summary>
/// 获得枚举类型数据项(不包括空项)
/// </summary>
/// <param name="enumType">枚举类型</param>
/// <returns></returns>
public static IList<object> GetItems(this Type enumType)
{
if (!enumType.IsEnum)
throw new InvalidOperationException(); IList<object> list = new List<object>(); // 获取Description特性
Type typeDescription = typeof(DescriptionAttribute);
// 获取枚举字段
FieldInfo[] fields = enumType.GetFields();
foreach (FieldInfo field in fields)
{
if (!field.FieldType.IsEnum)
continue; // 获取枚举值
int value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null); // 不包括空项
if (value > )
{
string text = string.Empty;
object[] array = field.GetCustomAttributes(typeDescription, false); if (array.Length > ) text = ((DescriptionAttribute)array[]).Description;
else text = field.Name; //没有描述,直接取值 //添加到列表
list.Add(new { Value = value, Text = text });
}
}
return list;
}
}

这里采用特性反射的方式得到了对应的Value和Text,最后返回了一个new { Value = …, Text = … }的匿名类的列表。

那么页面上实现就相当简单了:

ddlSubject.DataSource = typeof(Subject).GetItems();
ddlSubject.DataTextField = "Text";
ddlSubject.DataValueField = "Value";
ddlSubject.DataBind();

Asp.Net 之 枚举类型的下拉列表绑定的更多相关文章

  1. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  2. ASP.NET MVC 枚举类型转LIST CONTROL控件

    在实际应用中,我们经常会用到下拉框.多选.单选等类似的控件,我们可以统称他们为List Control,他们可以说都是一种类型的控件,相同之处都是由一个或一组键值对的形式的数据进行绑定渲染而成的. 这 ...

  3. 在WPF中使用变通方法实现枚举类型的XAML绑定

    问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我 ...

  4. asp.net MVC 枚举类型的处理的几种方式

    枚举类型本质上是int类型,整型,这是非常重要的一点. 可以使用(int)将它强制转换为 整形.如果要使用MVC5提供的新辅助方法@Html.EnumDropDownListFor()方法,就必须将枚 ...

  5. net core 使用tagHelper将 enum枚举类型转换为下拉列表select

    [HtmlTargetElement("enums")] //[HtmlTargetElement("enums", TagStructure = TagStr ...

  6. .net MVC 中枚举类型Enum 转化成 下拉列表的数据源

    第一次写技术博文,记录下工作中遇到的问题,给自己的知识做个备份,也希望能帮助到其他的同学 最近接手了公司的一个新的项目.有个页面涉及相关设计. 分享一个经常用到的吧. 方法一: 直入主题吧 我们的目的 ...

  7. MVC中将枚举类型数据应用到下拉列表中的方法

    例如: public enum ItemTypes   {      Movie = 1,      Game = 2,      Book = 3   }    在MVC2.0中如何将以上枚举类型使 ...

  8. DELPHI设置枚举类型size

    delphi枚举类型长度默认为2个字节(单字),而在C中枚举为4个字节(双字),如果需要跨这两个平台编程,传输结构时会由于数据长度不一造成灾难. 经过查找资料,原来delphi可以通过{$Z+} {$ ...

  9. ASP.NET WebForm中前台代码如何绑定后台变量

    转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...

随机推荐

  1. 测试peerdroid示例程序步骤

    来自JXTA交流群(36855950)...韦发改(992611244)  15:12:25—————————————————————————————————————————————————————— ...

  2. -ms-viewport的问题

    Windows 8 中的 Internet Explorer 10 和 Windows Phone 8 Internet Explorer 10 doesn't differentiate devic ...

  3. windos系统快捷键 2015-05-08 23:31 24人阅读 评论(0) 收藏

    WIN7的向上按钮消失了,但是它的快捷键没有消失: Alt + ↑: 文件夹的后退前进 Alt +← 和Alt →: 切换到上个操作的窗口Alt +Esc: 版权声明:本文为博主原创文章,未经博主允许 ...

  4. MEF(Managed Extensibility Framework)依赖注入学习

    MSDN官方资料,并且微软还提供了SimpleCalculator sample学习样例 http://msdn.microsoft.com/en-us/library/dd460648(v=vs.1 ...

  5. MySQL重置密码(OSX)

    1.停止MySQL的服务 sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop   2.cd /usr/local/mysql/bin ./mysqld_ ...

  6. 自定义Template,向其中添加新的panel

    参考网站:https://www.devexpress.com/Support/Center/Example/Details/E2690 思路: 新建一个DefaultTemplate:       ...

  7. NAND flash NOR flash SDRAM区别

    nand flash:适合大容量数据存储,类似硬盘:nor flash:适合小容量的程序或数据存储,类似小硬盘:sdram:主要用于程序执行时的程序存储.执行或计算,类似内存. 区别:nor flas ...

  8. js 创建List<Map> 这种格式的集合

    //赋值 var list_map = new Array(); for ( var i = 0; i < 10; i++) { list_map.push({baidux:'baidux'+i ...

  9. rpm包的管理

    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u ...

  10. 如何在DigitalOcean安装Ghost

    查看原文: http://leancodingnow.com/how-to-install-ghost-on-digital-ocean-vps/ 这篇文章主要讲一下如何在DigitalOcean V ...