im MVC -Rasierer Code
In der ASP.NET -MVC -Rasieransicht ist der Anzeigenname des Zugriffs von Aufzählungsmitgliedern von wesentlicher Bedeutung, um den Benutzern eine freundliche Beschreibung zu beschreiben. In diesem Artikel wird erläutert, wie diese Anzeignamen im Kontext des MVC -Rasierungscode abgerufen werden.Problembeschreibung
Bei einem Auftriebsmitglied, das [Anzeige] Attribute ändert, fordern die Herausforderungen, diese Anzeignamen im Rasierer Code zu extrahieren. Der Autor beabsichtigt, eine Liste mit dem Auswahlwert der aufgezählten Promotion zu füllen, und jeder Wert zeigt den entsprechenden Anzeigenamen.
Lösung
Um dieses Problem zu lösen, verwenden wir eine Erweiterungsmethode, um die Provinz in der Provinz zu erstellen und nach bestimmten Attributen zu suchen, die für ihre Mitglieder angewendet werden. Das Folgende ist der Code der Erweiterungsmethode:
Diese Methode wird als allgemeine Methode zum Abrufen von Attributen verwendet, die für die Aufzählungsmitglieder angewendet werden. In unserem Beispiel möchten wir die [Anzeige] Eigenschaft abrufen, um das Namensattribut zu erhalten.
<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>
Verwenden der Erweiterungsmethode können wir jetzt den Rasierer Code wie folgt ändern:
Dieser Code ruft die Eigenschaft [Anzeige] der aktuellen Promotion ab und greift auf seine Namenseigenschaft zu, um den entsprechenden Anzeigenamen im Listenelement anzuzeigen. Beachten Sie, dass der geänderte Codefür die Typumwandlung verwendet wird, was sicherer und zuverlässiger ist, um Attribute zu erhalten.
<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>
((UserPromotion)aPromotion)
Ausgabe:
<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>
Das obige ist der detaillierte Inhalt vonWie rufe ich Enum-Anzeigenamen in ASP.NET MVC Razor-Ansichten ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!