편집 : 이제 텍스트 필드에 대해 작업했습니다 (질문 아래의 주석 참조).ASP.NET/MVC : 자동 "유효성 검사"유형입니까?
그러나 어떤 이유로 든 드롭 다운 목록에 유효성 검사가 적용되지 않습니다. 내 뷰 모델에서
나는이있다 : 내보기에
[Display(Name = "Country")]
[Required(ErrorMessage = "{0} is definitely required!")]
public int CountryId { get; set; }
을 나는이 있습니다
@Html.LabelFor(m => m.CountryId, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.CountryId, Model.CountryList, "—Select a country --",
new { @class = "form-control" })
<div class="container_voor_error">
@Html.ValidationMessageFor(m => m.CountryId, "", new { @class = "text-danger" })
</div>
</div>
컨트롤러의 코드가 잘 작동하기 때문에 내가 생각 여기에 부여 할 필요가 없다 : CountryList를 국가로 채운 다음 나중에 제출 한 후 서버 측 유효성 검사와 처리를 수행합니다.
- 내가 드롭 다운 목록 (예를 들어, 벨기에)에서 국가를 선택;
그래서 시나리오는 이것이다
그런 다음 다시 선택을 취소하여 "국가 선택 -"을 다시 표시합니다.
이제 (게으른) 클라이언트 측 유효성 검사가 시작되어 "국가는 꼭 필요합니다!";라는 오류 메시지가 나타납니다.
하지만 그런 경우는 발생하지 않으며 오류 메시지가 표시되지 않습니다.
그래서 ... 내가 뭔가를 잊어 버렸거나 잘못된 것을하고 있습니까?
END-OF-EDIT
MVC의/ASP.NET 전문가를위한 쉬운 질문, 나는 가정한다. 그러나이 프레임 워크 (학교 과정)에서 여전히 길을 찾고 있기 때문에 이것은 내가 궁금해했던 부분이며 명백한 답을 찾지 못했습니다.
내 모델 (또는 viewmodel)의 주석을 사용하여 양식 입력의 클라이언트 측 유효성 검사에 대한 것입니다. 주석이 달린 유효성 확인 요구 사항 중 하나 이상이 충족되지 않는 한 양식 필드의 값은 제출시 서버로 보내지 않습니다. 대신 동일한 양식보기가 다시 표시됩니다. 이번에는 해당 오류 메시지가 표시됩니다. 물론 Html.ValidationMessageFor와 같은 오류 메시지에 대한 HTML 도우미가 양식 필드에 포함되어 있다고 가정합니다. 여태까지는 그런대로 잘됐다.
그러나 "유형에 따른 유효성 검증"과 같은 것이 있습니다. 사용자가 계속 입력하는 동안 오류 메시지가 나타나고 변경된다는 것을 의미합니다. 사용자가 제출을 클릭 한 후 다시로드 된 양식에만 나타나는 것과 반대되는 의미입니다. 그리고 이것이 나의 질문입니다. "유효성 검증 중"형식이 자동으로 작동해야합니까? 그게 인터넷 소스/튜토리얼에 의해 (일반적으로는 거의 언급되지는 않았지만) 일반적으로 암시 된 것 같습니다.
내 경험이 다릅니다. "유효성 검증시"형식을 사용하려면 항상 JavaScript/jQuery 이벤트 처리기 (예 : keyUp() 및 onChange())를 작성해야합니다. 명시 적으로
$('some-selector').validate().element('some-element');
그래서 내 질문은 전화 : 그것은 내가 각각-- 검증 폼 요소에 대한 방법의 validate() 이러한 명시 적으로 통화를 할 수있는 것은 정상인가요? 또는 ASP에 있습니다.NET/MVC,보기 양식의 모든 요소 (또는 요소의 하위 집합)에 대해 자동 "유효성 검사"유형을 활성화하는 방법?
감사합니다.
클라이언트 쪽 유효성 검사를 사용하지 않도록 설정하고 관련 스크립트를 포함시킨 경우 이것이 기본 동작입니다. 그리고 클라이언트 쪽 유효성 검사가 어떻게 작동하는지에 대한 오해 - 같은 양식보기가 다시 표시됩니다 _ 틀 렸습니다 - 제출 버튼을 클릭하고 유효성 검사 오류가 발생하면 양식이 제출되지 않거나 다시 표시됩니다 __. validate() 요소 ('some-element'); 코드 –
@Stepen Muecke 그래,하지만 약간 혼란스러워. 한편으로는 설명 된 동작 (즉, "유효성 검사 없음"유형)이 기본값이지만 JajvaScript/jQuery 행이 필요 없다고 명시해야합니다. 그렇다면 "유효성 검사"유형을 어떻게 성취해야합니까? (실제로 "유효성 검사는 실제대로 기본 동작"이란 의미입니까?) 또한 기본 설정으로 작업하고 있습니다. 스캐 폴딩 후 관련 항목을 활성화 또는 비활성화하지 않았으며 관련 스크립트를 추가하거나 제거했습니다. – Holland
계속 : 또한 유효성 검사 오류가 표시되면 "양식이 제출되거나 다시 표시되지 않습니다."라는 메시지가 표시됩니다. 즉, 서버에 게시되는 내용이 아무것도 없음을 의미합니다 (예 : "POST"또는 "GET"조치 취하지 않음). 장소), 맞습니까? 예, 이해합니다. 클라이언트 쪽 (jS)에 오류 메시지가 추가 된 것과 동일한 페이지 일뿐입니다. – Holland