8

일부 모델 개체에 string 속성을 사용하여 열거 형을 나타냅니다. Entity Framework Code First에는 아직 enum 지원이 없기 때문에 문자열 만 사용합니다. 어쨌든 EnumDataType이라는 System.ComponentModel.DataAnnotations에 속성이 있음을 발견했습니다. 이 속성을 설정하려고했지만 아무 영향을 미치지 않는 것 같습니다.EnumDataType 특성은 ASP.NET MVC에서 무엇을합니까?

궁극적 인 목표는 "작성"또는 "편집"보기에서 열거 형에 대해 적절한 드롭 다운 목록을 표시하는 것입니다. 나는 아마도 EnumDataType이 자동 스캐 폴딩 시나리오에서 이것을 더 쉽게 만들 것이라고 생각했지만 이것이 확실하지는 않습니다.

세 가지 질문 :

  1. EnumDataType는 ASP.NET MVC의 목적이 있습니까?
  2. 그렇다면 무엇을합니까?
  3. 내 모델 속성이 int (string 대신)이되어야 EnumDataType을 활용할 수 있습니까?

답변

8

EnumDataType은 현재 ASP.NET 동적 데이터 사이트 (.NET 4.0)에서만 지원됩니다. 일반적으로 애트리뷰트가 (리플렉션에 의해) 포함되어 있고 연결된 열거 형의 값으로 드롭 다운을 생성하는 경우 속성 확인을 수행하는 자체 사용자 정의 HTML 도우미를 작성할 수 있습니다.

+0

한 감사. 아마 도우미 방법이 필요할 것 같았습니다. 각 enum 유형에 대해 도우미 메소드가 필요합니까? 아니면 모든 enum 유형에 대해 작동하는 다용도 메소드를 작성할 수 있습니까? – devuxer

+0

나는 enum 타입이 애트리뷰트에서 추출 될 것이므로 모든 enum 타입에 대해 작동하는 단일 메소드를 작성하는 것이 가능해야한다고 생각한다. –

0

MVC 3에는 EnumDataTypeAttribute을 처리 할 논리가 없습니다.

0

MVC3 또는 EF4.1 CodeFirst는이 속성을 사용하여 속성의 유효성을 검사합니다. 현재 EF에서 열거 형 지원이 없기 때문에 편리합니다. 즉, 속성을 정수 속성에 넣을 수 있습니다.

4

가장 좋은 해결책은 this blogthis answer을 결합하는 것입니다. 이렇게하면보기 및 모델 모두를 매우 읽기 쉽고 유지 보수 할 수 있습니다.

full answer here을 참조하십시오.

모델 :

public enum YesPartialNoEnum 
{ 
    [Description("Yes definitely")] 
    Yes, 
    [Description("No way!")] 
    No 
} 

//........ 

[Display(Name = "The label for my dropdown list")] 
public virtual Nullable<YesPartialNoEnum> CuriousQuestion{ get; set; } 

//........ 

보기 :

@Html.ValidationMessageFor(model => model.CuriousQuestion)