Mengendalikan nama paparan enum dalam kod Razor MVC
Dalam paparan ASP.NET MVC Razor, mengakses nama paparan ahli penghitungan adalah penting untuk menyampaikan penerangan mesra kepada pengguna. Artikel ini meneroka cara untuk mendapatkan semula nama paparan ini dalam konteks kod Razor MVC.
Huraian Masalah
Memandangkan ahli penghitungan yang dihiasi dengan atribut [Paparan], cabarannya ialah untuk mengekstrak nama paparan ini dalam kod Razor. Pengarang berhasrat untuk mengisi senarai dengan nilai pilihan penghitungan Promosi, setiap nilai menunjukkan nama paparannya yang sepadan.
Penyelesaian
Untuk menyelesaikan masalah ini, kami menggunakan kaedah lanjutan untuk mengintrospeksi penghitungan dan mendapatkan semula sifat khusus yang digunakan untuk ahlinya. Berikut ialah kod untuk kaedah sambungan:
<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>
Kaedah ini berfungsi sebagai cara umum untuk mendapatkan semula mana-mana harta yang digunakan untuk ahli enum. Dalam kes kami, kami ingin mendapatkan semula sifat [Paparan] untuk mendapatkan sifat Namanya.
Pelaksanaan dalam paparan Razor
Menggunakan kaedah sambungan, kami kini boleh mengubah suai kod Razor seperti berikut:
<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>
Kod ini mendapatkan semula sifat [Paparan] promosi semasa dan mengakses sifat Namanya untuk memaparkan nama paparan yang sepadan dalam item senarai. Ambil perhatian bahawa kod yang diubah suai menggunakan ((UserPromotion)aPromotion)
untuk penukaran jenis untuk mendapatkan atribut dengan lebih selamat dan boleh dipercayai.
Contoh penggunaan
Untuk contoh demonstrasi, sila rujuk coretan kod berikut:
<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>
Output:
<code>Which season is it? It's summer</code>
Kod yang dipertingkatkan adalah lebih mantap, mengendalikan kemungkinan pengecualian rujukan nol dan dengan lebih jelas menunjukkan cara menggunakan kaedah sambungan dengan betul untuk mendapatkan nama paparan penghitungan dalam paparan Razor.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nama Paparan Enum dalam ASP.NET MVC Razor Views?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!