dans le code du rasoir MVC
Dans la vue Razor ASP.NET MVC, le nom d'affichage de l'accès aux membres d'énumération est essentiel pour décrire une description amicale aux utilisateurs. Cet article explique comment récupérer ces noms d'affichage dans le contexte du code du rasoir MVC.Description du problème
étant donné un membre de l'ascenseur qui modifie [afficher] les attributs, les défis pour extraire ces noms d'affichage dans le code du rasoir. L'auteur a l'intention de remplir une liste avec la valeur de sélection de la promotion énumérée, et chaque valeur affiche le nom d'affichage correspondant.
Solution
Afin de résoudre ce problème, nous utilisons une méthode d'extension pour faire de la province dans la province et rechercher des attributs spécifiques appliqués à ses membres. Ce qui suit est le code de la méthode d'extension:
Cette méthode est utilisée comme méthode générale pour récupérer tous les attributs appliqués aux membres d'énumération. Dans notre exemple, nous voulons récupérer la propriété [Display] pour obtenir son attribut de nom.
<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>
En utilisant la méthode d'extension, nous pouvons maintenant modifier le code de rasoir comme suit:
Ce code récupère la propriété [Affichage] de la promotion actuelle et accédez à sa propriété de nom pour afficher le nom d'affichage correspondant dans l'élément de liste. Notez que le code modifié utilisepour la conversion de type, qui est plus sécurisé et fiable pour obtenir des attributs.
<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)
Sortie:
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!