개발관련/other

ASP.NET MVC의 enum 형에서 드롭 다운 목록을 만드는 방법

Rateye 2021. 7. 19. 10:13
728x90
반응형

 

질문 : ASP.NET MVC의 열거 형에서 드롭 다운 목록을 만드는 방법은 무엇입니까?

Html.DropDownList 확장 메서드를 사용하려고하는데 열거 형과 함께 사용하는 방법을 알아낼 수 없습니다.

다음과 같은 열거가 있다고 가정 해 보겠습니다.

public enum ItemTypes
{
    Movie = 1,
    Game = 2,
    Book = 3
}

Html.DropDownList 확장 메서드를 사용하여 이러한 값으로 드롭 다운을 만드는 방법은 무엇입니까?

아니면 단순히 for 루프를 만들고 Html 요소를 수동으로 만드는 것이 최선의 방법입니까?

답변

@Html.EnumDropDownListFor(
    x => x.YourEnumField,
    "Select My Type", 
    new { @class = "form-control" })
@Html.DropDownList("MyType", 
   EnumHelper.GetSelectList(typeof(MyType)) , 
   "Select My Type", 
   new { @class = "form-control" })

나는 룬의 대답을 확장 방법으로 굴렸다.

namespace MyApp.Common
{
    public static class MyExtensions{
        public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
            where TEnum : struct, IComparable, IFormattable, IConvertible
        {
            var values = from TEnum e in Enum.GetValues(typeof(TEnum))
                select new { Id = e, Name = e.ToString() };
            return new SelectList(values, "Id", "Name", enumObj);
        }
    }
}

이를 통해 다음을 작성할 수 있습니다.

ViewData["taskStatus"] = task.Status.ToSelectList();

MyApp.Common을 using MyApp.Common

출처 : https://stackoverflow.com/questions/388483/how-do-you-create-a-dropdownlist-from-an-enum-in-asp-net-mvc
728x90
반응형