在 MVC Razor 視圖中有效顯示枚舉顯示名稱需要訪問屬性元數據。 這可以使用利用反射的自定義擴展方法來優雅地處理。
以下擴展方法提供了一個乾淨的解決方案:
<code class="language-csharp">public static TAttribute GetAttribute<TAttribute>(this Enum enumValue) where TAttribute : Attribute { return enumValue.GetType() .GetMember(enumValue.ToString()) .First() .GetCustomAttribute<TAttribute>(); }</code>
此方法使用反射來檢查枚舉類型並檢索與與提供的枚舉值匹配的枚舉成員關聯的指定類型 (TAttribute
) 的第一個屬性。
以下是如何將此擴展方法集成到 Razor 視圖中:
<code class="language-csharp">@foreach (int aPromotion in Enum.GetValues(typeof(UserPromotion))) { var currentPromotion = (int)Model.JobSeeker.Promotion; if ((currentPromotion & aPromotion) == aPromotion) { <p>@((UserPromotion)aPromotion).GetAttribute<DisplayAttribute>().Name</p> } }</code>
此代碼迭代 UserPromotion
枚舉值。 對於 Model.JobSeeker.Promotion
屬性中存在的每個值(假設它是標誌枚舉),它使用擴展方法檢索 DisplayAttribute
的 Name
屬性並顯示它。 這可確保僅顯示選定的枚舉值及其用戶友好的顯示名稱。
以上是如何檢索 MVC Razor 視圖中的枚舉顯示名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!