关于c#中枚举类型支持显示中文的扩展说明
发布时间:2023-02-02 22:35:02
AuditEnum.cs:
public enum AuditEnum
{
Holding=0,
Auditing=1,
Pass=2,
Reject=3
}
以asp.net为例,程序中某个方法可能会这样使用枚举值:
public void HandleAudit(int userID, AuditEnum ae)
{
if (ae==AuditEnum.Pass)
{
//do something
}
else if (ae==AuditEnum.Reject)
{
//do other something
}
}
asp.net页面往往需要显示中文枚举信息:
序号
项目
状态
审核人
请假单
审核通过
张三
解决方法:给枚举项增加DescriptionAttribute后利用反射来获取中文信息.
步骤:
1.在定义枚举AuditEnum的类中添加名称空间System.ComponentModel , 给每个枚举项加DescriptionAttribute,示例代码如下:
using System.ComponentModel;
public enum AuditEnum
{
[Description("未送审")]
Holding=0,
[Description("审核中")]
Auditing=1,
[Description("审核通过")]
Pass=2,
[Description("驳回")]
Reject=3
}
2 . 自定义一个类EnumService.cs,增加静态方法GetDescription()根据传入的枚举值来读取Description信息,示例代码如下:
public class EnumService
{
public static string GetDescription(Enum obj)
{
string objName = obj.ToString();
Type t = obj.GetType();
FieldInfo fi = t.GetField(objName);
DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return arrDesc[0].Description;
}
}
3 . 在输出枚举值的地方增加对EnumService.GetDescription()的调用,示例代码如下:
asp.net页面代码:
<asp:Repeater ID="AuditRepeater" runat="server" OnItemDataBound="AuditRepeater_OnItemDataBound">
<ItemTemplate>
//something ui code is here ....
<asp:Literal ID="AuditText" runat="server"></asp:Literal>
//something ui code is here ....
</ItemTemplate>
</asp:Repeater>
asp.net页面后台代码:
protected void AuditRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs arg)
{
if (arg.Item.ItemType == ListItemType.Item)
{
Literal audit = arg.Item.FindControl("AuditText") as Literal;
AuditEnum ae = AuditEnum.Pass; //根据项目的实际情况赋值,这里为简化赋值AuditEnum.Pass
audit.Text = EnumService.GetDescription(we);
}
}
全文完 .
以上代码运行于VS2010 , 有任何问题请在下方留言,喜欢就点推荐.


猜你喜欢
- 最近在开发中遇到了这样一个问题,在下拉刷新组件中包含了一个轮播图组件,当左右滑动的图片时很容易触发下拉刷新,如下图所示:如图中红色箭头所示方
- 一、如何显示assets/license.txt(中文)的内容? (1)方法1:InputStream.available()得到字节数,然
- 操作步骤如下一、dropzone导入01.dropzone官网下载其插件压缩包并复制项目;02.将CSS和JS文件在HTML文件中引入;//
- 1 synchronized场景回顾目标:synchronized回顾(锁分类–>多线程)概念synchroniz
- 投篮小游戏规则,点击投篮目标点,就会有一个球沿着相关抛物线,然后,判断是否进入篮子里,其实就是一个矩形,直接是按照碰撞检测来的,碰到就算进去
- 一、Servlet概述1.sun公司提供的动态web资源开发技术。本质是上一段java小程序,要求这个小程序必须实现Servlet接口,以便
- 本文实例讲述了java内部类原理与用法。分享给大家供大家参考,具体如下:概念内部类:可以包含在另外一个类中的类外部类:包含内部类的类每个内部
- 一、OpenCV OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,是一个基于C与C++的跨平台计算机视觉处
- Java 常量池的实例详解Java的常量池中包含了类、接口、方法、字符串等一系列常量值。常量池在编译期间就已经确定,并保存在*.class文
- 应用场景假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费如果仓库中没有产品,则生产者将产品放入仓库,否
- 目录1、简介2、适用情况3、mybatis-plus前期准备(工程将以 H2 作为默认数据库进行演示)1、使用 Spring Initial
- 本文实例为大家分享了swing登录注册界面展示的具体代码,供大家参考,具体内容如下开发环境:Eclipse Neon.3 Release (
- 本文实例讲述了Winform中GridView分组排序功能实现方法。分享给大家供大家参考。具体实现方法如下:一、问题:由于客户最近要扩充公司
- 引言在第一篇文章中我们分析了协程启动创建过程启动过程,在本文中,我们将着重剖析协程中协程调度的逻辑流程。主要是分析解答如下2个问题:涉及到协
- kafka消费不到数据的排查集群上新安装并启动了3个kafka Broker,代码打包上传至集群,运行后发现一直消费不到数据,本地
- Springboot导出文件,前端下载文件后端代码可以把请求设置为post,我这里是Get @RequestMapping(value =
- 前言随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring
- 本文实例讲述了Android编程之手机壁纸WallPaper设置方法。分享给大家供大家参考,具体如下:/** * Andorid设置手机屏幕
- 如下所示:public static void main(String[] args) {String str1 = "刘烨,孙坚
- C语言运算符及其优先级汇总表口诀圆下箭头一顿号非凡增减富强针地长三乘除,四加减,五移位千万别把鱼忘记,它在盛饭的厨子里小灯大灯灯灯不等爸喂鱼