> 백엔드 개발 > C++ > ASP.NET MVC Razor 뷰에서 열거형 표시 이름을 검색하는 방법은 무엇입니까?

ASP.NET MVC Razor 뷰에서 열거형 표시 이름을 검색하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-27 09:26:12
원래의
784명이 탐색했습니다.

How to Retrieve Enum Display Names in ASP.NET MVC Razor Views?

MVC Razor 코드에서 열거형 표시 이름 처리

ASP.NET MVC Razor 뷰에서 열거형 멤버의 표시 이름에 액세스하는 것은 사용자에게 친숙한 설명을 제공하는 데 매우 중요합니다. 이 문서에서는 MVC Razor 코드의 컨텍스트에서 이러한 표시 이름을 검색하는 방법을 살펴봅니다.

문제 설명

[Display] 속성으로 장식된 열거형 멤버가 있는 경우 Razor 코드에서 이러한 표시 이름을 추출하는 것이 과제입니다. 작성자는 프로모션 열거 중 선택된 값으로 목록을 채우려고 하며, 각 값은 해당 표시 이름을 표시합니다.

솔루션

이 문제를 해결하기 위해 확장 메서드를 활용하여 열거형을 검사하고 해당 멤버에 적용된 특정 속성을 검색합니다. 확장 메서드에 대한 코드는 다음과 같습니다.

<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>
로그인 후 복사

이 방법은 열거형 멤버에 적용된 속성을 검색하는 일반적인 방법으로 사용됩니다. 우리의 경우에는 [Display] 속성을 검색하여 Name 속성을 가져오려고 합니다.

Razor 뷰 구현

이제 확장 메서드를 사용하여 Razor 코드를 다음과 같이 수정할 수 있습니다.

<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>
로그인 후 복사

이 코드는 현재 프로모션의 [Display] 속성을 검색하고 해당 Name 속성에 액세스하여 목록 항목에 해당 표시 이름을 표시합니다. 수정된 코드에서는 보다 안전하고 안정적으로 속성을 얻기 위해 유형 변환에 ((UserPromotion)aPromotion)을 사용합니다.

사용예

샘플 데모를 보려면 다음 코드 조각을 참조하세요.

<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>
로그인 후 복사

출력:

<code>Which season is it?
It's summer</code>
로그인 후 복사

향상된 코드는 더욱 강력해지고 잠재적인 null 참조 예외를 처리하며 확장 메서드를 올바르게 사용하여 Razor 뷰에서 열거형의 표시 이름을 가져오는 방법을 더욱 명확하게 보여줍니다.

위 내용은 ASP.NET MVC Razor 뷰에서 열거형 표시 이름을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿