2016-07-26 3 views
1

에서보기 내 모델 클래스에서 필자는 열거 형 속성 SubjectType이 이 속성에 대한 목록입니다. 하지만 기본적으로 사용자가 무언가를 선택해야하므로 null으로 설정하고 옵션을 선택하지 않고 양식을 제출하려고하면 유효성 확인 메시지가 표시됩니다.대상 드롭 다운 목록 MVC 4

이것을 달성하는 가장 좋은 방법은 무엇입니까?

SubjectType 속성을 nullable로 변경하려고했으나 기본값을 null으로 설정했지만 유효성 검사가이 필드 (여하튼)에 전달되어 양식이 서버에 제출되었습니다. 기본적으로이 필드의 값은 enum 정의의 첫 번째 값으로 설정됩니다. 자바 스크립트를 사용할 수 없으며 모든 것을 코드 숨김으로 유지하고 싶습니다. 나는 어떤 충고에 대해 감사 할 것입니다.

@Html.DropDownList("SubjectType", EnumHelper.GetSelectList(typeof(SubjectType))) 
@Html.LabelFor(model => model.SubjectType) 
@Html.ValidationMessageFor(model => model.SubjectType) 
+0

드롭 다운을 어떻게 렌더링하고 있습니까? 귀하의보기 코드? 드롭 다운을 구성하기 위해 항목을 전달하는 방법은 무엇입니까? – Shyju

+0

이 (가) 게시물을 편집했습니다. EnumHelper는 System.Web.Mvc의 System.Web.Mvc 어셈블리에 있습니다.HTML 네임 스페이스 – Koteczeg

+0

은 foreach를 사용하여 목록을 렌더링합니다. – Steve

답변

1

이 문제를 해결할 수 있습니다 : 제출 단추를 onclick 동작으로 단추로 변경 한 다음 javascript에서 유효성을 검사합니다. 양식과이 열거 형 필드가 유효한 경우 jQuery를 사용하여 양식을 제출하십시오.

+0

고맙습니다. 선생님. – Koteczeg

0

편집 :

지금까지 내가 이런 식으로 렌더링 나는 문제가 세 배라고 생각. 먼저 속성의 이름이 SubjectType인데 드롭 다운의 이름이 Type이므로 SubjectType에 바인딩 할 수 없습니다.

초, 분명히 @ HTML.dropdownlistfor()를 사용해야합니다. 나는 두 개의 다른 버전으로 뷰 소스를 만들었고 dropdownlistfor와 dropdownlistfor는 유효성 검사 클래스를 추가하는 유일한 클래스입니다 (아래 참조)

세 번째로 옵션 레이블 매개 변수 "Select a Type"을 기본값으로 추가해야했습니다 . 나는 그것이 당신을 위해 지금 일할 것이라 확신합니다. 모델에서

: HTML에서

[Required(ErrorMessage = "Error!")] 
public string SubjectType{ get; set; } 

:

지금
@Html.DropDownListFor(m => m.SubjectType, new SelectList(Enum.GetNames(typeof(SubjectType))), "Select a Type", new { @class = "pretty" }) 

난 당신이 내가 당신이 내 두 번째 PARAM을 교체하는 경우 그 잘 될 것이라고 생각 열거 가능한을 비치한다 도우미를 참조 .

DropDownList로 요소 선택의 DropdownlistFor 렌더링 대 :

드롭 다운리스트 :

<select name="SubjectType" class="pretty" id="SubjectType">...</select> 

DropdownListFor : 당신이 볼 수 있듯이

<select name="SubjectType" class="pretty" id="SubjectType" data-val-required="Error!" data-val="true">...</select> 

데이터 발 필수 및 데이터 발 클래스는 누락 간단한 드롭 다운을 할 때 해당 속성에 대한 유효성 검사를 실행하지 않을 때. 여기에 오기의 모든 고통에 대해 유감스럽게 생각합니다. 그것이 작동하면 나를 표시하는 것을 잊지 마세요.

+0

유효성 검사 메시지를 제기하지 않고 SubjectType 속성 값이있는 양식 하위 항목을 열거 형 정의의 첫 번째 값으로 사용합니다. 기본 옵션으로 "유형 선택"이라는 추가 옵션 만 표시됩니다. – Koteczeg

+0

아마도 필수 속성에 문제가 있습니까? "빈 문자열 필요 없음"과 같은 것으로 대체해야합니까? nah 이상하지 않습니다. podel의 속성 유형이 열거 형이 아닙니다. – Koteczeg

+0

여기에서 무언가를 확인하겠습니다. –