ASP.NET MVC Razorビューでは、列挙メンバーのアクセスの表示名は、ユーザーに友好的な説明を説明するために不可欠です。この記事では、MVC Razorコードのコンテキストでこれらの表示名を取得する方法について説明します。
問題の説明
[表示]属性を変更するリフトメンバー、レイザーコードでこれらのディスプレイ名を抽出するための課題が与えられます。著者は、列挙されたプロモーションの選択値でリストに記入するつもりであり、各値は対応するディスプレイ名を表示します。
solutionこの問題を解決するために、拡張法を使用して州の州を作成し、そのメンバーに適用される特定の属性を検索します。以下は、拡張方法のコードです:
この方法は、列挙メンバーに適用される属性を取得するための一般的な方法として使用されます。この例では、[表示]プロパティを取得して、その名前属性を取得する必要があります。
<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>
拡張方法を使用して、次のようにカミソリコードを変更できるようになりました。
このコードは、現在のプロモーションの[表示]プロパティを取得し、その名前のプロパティにアクセスして、リスト項目に対応する表示名を表示します。 変更されたコードは、タイプ変換にを使用していることに注意してください。これは、属性を取得するためにより安全で信頼性が高いことに注意してください。
例の例関連の例のデモンストレーション、次のコードフラグメントを参照してください:<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>
output:((UserPromotion)aPromotion)
改良されたコードはより堅牢で、潜在的な空気引用の異常を処理し、レーザービューで拡張メソッドを正しく使用してディスプレイ名を取得する方法をより明確に示しています。
以上がASP.NET MVC Razor Viewsで列挙名を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。