Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过MVC Razor代码获取Enum成员的显示名称属性?

如何通过MVC Razor代码获取Enum成员的显示名称属性?
EN

Stack Overflow用户
提问于 2012-10-27 11:38:04
回答 14查看 327.6K关注 0票数 247

我的模型中有一个名为Promotion的属性,它的类型是一个名为UserPromotion的标志枚举。我的枚举成员的显示属性设置如下:

代码语言:javascript
运行
AI代码解释
复制
[Flags]
public enum UserPromotion
{
    None = 0x0,

    [Display(Name = "Send Job Offers By Mail")]
    SendJobOffersByMail = 0x1,

    [Display(Name = "Send Job Offers By Sms")]
    SendJobOffersBySms = 0x2,

    [Display(Name = "Send Other Stuff By Sms")]
    SendPromotionalBySms = 0x4,

    [Display(Name = "Send Other Stuff By Mail")]
    SendPromotionalByMail = 0x8
}

现在,我希望能够在我的视图中创建一个ul来显示我的Promotion属性的选定值。这就是我到目前为止所做的,但问题是,我如何才能在这里获得显示名称?

代码语言:javascript
运行
AI代码解释
复制
<ul>
    @foreach (int aPromotion in @Enum.GetValues(typeof(UserPromotion)))
    {
        var currentPromotion = (int)Model.JobSeeker.Promotion;
        if ((currentPromotion & aPromotion) == aPromotion)
        {
        <li>Here I don't know how to get the display attribute of "currentPromotion".</li>
        }
    }
</ul>
EN

回答 14

Stack Overflow用户

发布于 2015-09-09 12:38:34

如果你使用的是MVC5.1或更高版本,有一种更简单、更清晰的方法:只需使用数据注释(来自System.ComponentModel.DataAnnotations命名空间),如下所示:

代码语言:javascript
运行
AI代码解释
复制
public enum Color
{
    [Display(Name = "Dark red")]
    DarkRed,
    [Display(Name = "Very dark red")]
    VeryDarkRed,
    [Display(Name = "Red or just black?")]
    ReallyDarkRed
}

在视图中,只需将其放入适当的html helper中:

代码语言:javascript
运行
AI代码解释
复制
@Html.EnumDropDownListFor(model => model.Color)
票数 29
EN

Stack Overflow用户

发布于 2012-10-27 12:10:48

您可以使用Type.GetMember Method,然后使用反射使用get the attribute info

代码语言:javascript
运行
AI代码解释
复制
// display attribute of "currentPromotion"

var type = typeof(UserPromotion);
var memberInfo = type.GetMember(currentPromotion.ToString());
var attributes = memberInfo[0].GetCustomAttributes(typeof(DisplayAttribute), false);
var description = ((DisplayAttribute)attributes[0]).Name;

这里也有一些类似的帖子:

Getting attributes of Enum's value

How to make MVC3 DisplayFor show the value of an Enum's Display-Attribute?

票数 11
EN

Stack Overflow用户

发布于 2019-11-13 19:55:49

对于ASP.Net Core3.0,这对我很有效(归功于之前的回答者)。

我的枚举类:

代码语言:javascript
运行
AI代码解释
复制
using System;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using System.Reflection;

public class Enums
{
    public enum Duration
    { 
        [Display(Name = "1 Hour")]
        OneHour,
        [Display(Name = "1 Day")]
        OneDay
    }

    // Helper method to display the name of the enum values.
    public static string GetDisplayName(Enum value)
    {
        return value.GetType()?
       .GetMember(value.ToString())?.First()?
       .GetCustomAttribute<DisplayAttribute>()?
       .Name;
    }
}

我的视图模型类:

代码语言:javascript
运行
AI代码解释
复制
public class MyViewModel
{
    public Duration Duration { get; set; }
}

显示标签和下拉列表的剃刀视图示例。请注意,下拉列表不需要辅助方法:

代码语言:javascript
运行
AI代码解释
复制
@model IEnumerable<MyViewModel> 

@foreach (var item in Model)
{
    <label asp-for="@item.Duration">@Enums.GetDisplayName(item.Duration)</label>
    <div class="form-group">
        <label asp-for="@item.Duration" class="control-label">Select Duration</label>
        <select asp-for="@item.Duration" class="form-control"
            asp-items="Html.GetEnumSelectList<Enums.Duration>()">
        </select>
    </div>
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13099834

复制
相关文章
动态创建数组[通俗易懂]
使用运算符new也可以创建数组类型的对象,这时需要给出数组的结构说明。用new运算符动态创建一维数组的语法形式为: new 类型名【数组长度】; 其中数组长度指出了数组元素的个数,它可以是任何能够得到正整数值的表达式。 细节: 用new动态创建一维数组时,在方括号后仍然可以加小括号“()”,但小括号内不能带任何参数。是否加“()”的区别在于,不加“()”,则对数组每个元素的初始化,与执行“new T”时所进行初始化的方式相同;加“()”,则与执行“new T()”所进行初始化的方式相同。例如,如果这样动态生成一个整型数组: int *p=new int[10] (); 则可以方便地为动态创建的数组用0值初始化。 如果是用new建立的数组,用delete删除时所在指针名前面要加上“【】”,格式如下: delete[] 指针名;
全栈程序员站长
2022/08/15
3.1K0
JavaScript中的数组创建
数组是一个包含了对象或原始类型的有序集合。很难想象一个不使用数组的程序会是什么样。
疯狂的技术宅
2019/03/27
3.6K0
前端|创建简单动态时钟
动态时钟,就是通过CSS工具的美化效果和引入JavaScript,让网页呈现出钟表的动态效果,让它能够记录时间。通过改变背景颜色、指针颜色和阴影效果,让时钟呈现不同的颜色。
算法与编程之美
2020/08/10
1.8K0
前端|创建简单动态时钟
创建二维动态数组
int** P2=new int* [n]; //行定义 for(int i=0; i<n; i++) P2[i]=new int[m]; //列定义
用户3519280
2023/07/24
1990
javascript 动态函数如何创建?
JavaScript作为一门动态语言,提供了多种创建动态函数的方法。动态函数的创建允许我们在运行时根据需要生成函数,从而实现灵活的编程和动态逻辑。本文将介绍动态函数的概念,探讨几种常用的方法来创建动态函数,并分享一些动态函数的应用场景。
海拥
2023/06/27
6690
javascript 动态函数如何创建?
VBA中动态数组的定义及创建
大家好,今日我们继续讲解VBA数组与字典解决方案的第19讲:动态数组的定义及创建。在VBA中,数组可分为固定数组和动态数组,也称为静态数组和动态数组。我们之前所定义的数组,都是静态数组。静态数组的特点是具有大小的数组。当我们事先知道数组的大小,我们可以直接声明为静态数组。固定数组定义方法:DIM 数组名(<下届>TO<上届>)。
用户8870853
2021/07/27
3.5K0
javaScript中创建数组的3种方式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136682.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/20
1.2K0
javaScript中创建数组的3种方式
C++ 创建动态二维数组
在C++中创建数组的时候需要声明数组的长度,在声明一个二维数组的参数时,则至少需要确认第二维的长度,否则就无法完成编译。 为什么呢,我们可以用一张图来表示c++二维数组在内存中的表示就理解了。
雪碧君
2023/02/15
8680
javascript 数组求和_javascript数组的定义
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
2.2K0
JavaScript数组创建及常见方法汇总
插入:可以向指定位置插入任意数量的元素,需要提供3个参数:起始位置、0(要删除的元素数量)、插入的元素
用户1272076
2019/03/26
4360
【说站】JavaScript使用map创建新数组
1、map方法将原始数组中的每一个元素按顺序调用callback函数。每一次执行后,callback的返回值(包括undefined)组合在一起,形成一个新的数组。callback函数只会被调用到有价值的索引中;那些从未被赋予或使用delete删除的索引不会被调用。
很酷的站长
2022/11/24
2.3K0
【说站】JavaScript使用map创建新数组
JAVASCRIPT创建一个基于数组的栈结构
栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同 一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
用户1289394
2021/10/13
1K0
关于JAVA中动态创建二维数组的技巧
(本文年代久远,请谨慎阅读)看似一个非常简单的问题,但是实际却花了我很多时间。我的目的是,创建一个二维数组str[][],令 str[][] <-- Arraylist<Arraylist<T>> //此处T指的int(Integer)类型
ZONGLYN
2019/08/08
3.7K0
比EntityFramework简单很多的SOD框架动态创建表的方法
今天看到一篇博文EntityFramework Core如何映射动态模型? ,文章讲的是如何用EF动态创建表的问题,比如根据时间动态创建一个表,这种场景常出现在应用系统的日志记录功能中。原文用EF实现非常复杂,相比而言,SOD框架就要简单很多。
用户1177503
2021/02/02
8980
怎样在JavaScript中创建和填充任意长度的数组 [每日前端夜话0x29]
不过这并不是长久之计,比如当我们需要创建大型数组时。这篇博文探讨了在这种情况下应该怎么做。
疯狂的技术宅
2019/03/27
3.5K0
怎样在JavaScript中创建和填充任意长度的数组 [每日前端夜话0x29]
动态数组
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155195.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
1K0
动态数组
JavaScript—数组
​ var 数组名 = new Array(); //创建空数组
Cikian.
2022/09/22
6630
JavaScript数组
数组是一种特殊类型的对象。在 JavaScript 中对数组使用 typeof 运算符会返回 “object”。
hotarugali
2022/03/01
1.3K0
JavaScript——数组
数组(Array)是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。
岳泽以
2022/10/26
6970
JavaScript——数组
javascript 数组的组合
今天在开发项目过程中,遇到了一个需求,先请求了30个数据,放在一个列表中,并渲染展示出来,然后又请求了另外的30个数据,放在一个列表中,想在前一个数据的后面继续展示,即将第二次请求的来的数据列表跟第一次请求的数据列表做一个合并,需要用到数据的合并,接下来给大家介绍一下javascript中数据合并的几个方法
@零一
2021/01/29
1.1K0

相似问题

如何使用lodash过滤对象?

10

使用Lodash过滤对象

210

如何使用lodash过滤嵌套对象

30

如何使用lodash或javascript过滤对象

90

使用lodash根据对象的值过滤对象

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档