首页 > 后端开发 > C++ > 如何检索 ASP.NET MVC Razor 视图中的枚举显示名称?

如何检索 ASP.NET MVC Razor 视图中的枚举显示名称?

Linda Hamilton
发布: 2025-01-27 09:26:12
原创
784 人浏览过

How to Retrieve Enum Display Names in ASP.NET MVC Razor Views?

在MVC Razor代码中处理枚举显示名称

在ASP.NET MVC Razor视图中,访问枚举成员的显示名称对于向用户呈现友好的描述至关重要。本文探讨如何在MVC Razor代码上下文中检索这些显示名称。

问题描述

给定一个用[Display]属性修饰的枚举成员,挑战在于在Razor代码中提取这些显示名称。作者打算用Promotion枚举的选定值填充一个列表,每个值都显示其对应的显示名称。

解决方案

为了解决这个问题,我们利用一个扩展方法来内省枚举并检索应用于其成员的特定属性。以下是扩展方法的代码:

<code class="language-csharp">public static class Extensions
{
    public static TAttribute GetAttribute<TAttribute>(this Enum enumValue)
        where TAttribute : Attribute
    {
        return enumValue.GetType()
            .GetMember(enumValue.ToString())
            .First()
            .GetCustomAttribute<TAttribute>();
    }
}</code>
登录后复制

此方法作为一种通用的方法来检索应用于枚举成员的任何属性。在我们的例子中,我们想要检索[Display]属性以获取其Name属性。

在Razor视图中的实现

使用扩展方法,我们现在可以修改Razor代码如下:

<code class="language-csharp">@foreach (int aPromotion in Enum.GetValues(typeof(UserPromotion)))
{
    var currentPromotion = (int)Model.JobSeeker.Promotion;
    if ((currentPromotion & aPromotion) == aPromotion)
    {
       var displayName = ((UserPromotion)aPromotion).GetAttribute<DisplayAttribute>().Name;
       <li>@displayName</li>
    }
}</code>
登录后复制

这段代码检索当前促销的[Display]属性,并访问其Name属性以在列表项中显示相应的显示名称。 注意修改后的代码使用了((UserPromotion)aPromotion)进行类型转换,更安全可靠地获取属性。

示例用法

有关示例演示,请参考以下代码片段:

<code class="language-csharp">public class Foo
{
    public Season Season { get; set; }

    public void DisplayName()
    {
        var seasonDisplayName = Season.GetAttribute<DisplayAttribute>();
        Console.WriteLine("Which season is it?");
        Console.WriteLine(seasonDisplayName?.Name ?? "Unknown"); // 使用空合并运算符处理可能为null的情况
    }
}

public enum Season
{
    [Display(Name = "It's autumn")]
    Autumn,
    [Display(Name = "It's winter")]
    Winter,
    [Display(Name = "It's spring")]
    Spring,
    [Display(Name = "It's summer")]
    Summer
}</code>
登录后复制

输出:

<code>Which season is it?
It's summer</code>
登录后复制

改进后的代码更健壮,处理了潜在的空引用异常,并更清晰地展示了如何正确在Razor视图中使用扩展方法获取枚举的显示名称。

以上是如何检索 ASP.NET MVC Razor 视图中的枚举显示名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板