首頁 >後端開發 >C++ >如何擷取 ASP.NET MVC Razor 視圖中的枚舉顯示名稱?

如何擷取 ASP.NET MVC Razor 視圖中的枚舉顯示名稱?

Linda Hamilton
Linda Hamilton原創
2025-01-27 09:26:12804瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn