2012-02-15 4 views
0

EF를 사용하는 MVC3 앱이 있는데, 많은 뷰 모델에서 테이블 하나가 감겨 있습니다. 그것은 일반적으로 요구되지 않는 분야를 가지고 있습니다. 그러나 필요한 곳은 하나의 상황 (하나의 견해)입니다. 이 필드의 필수 항목에 대한 클라이언트 및 서버 유효성 검사가 모두 필요합니다.ad-hoc 방해하지 않는 유효성 검사 추가하기

지금은 필드에 Required 데이터 주석을 넣지 않으려합니다. 왜냐하면 항상 필요하기 때문입니다. 필드가 편집을 위해 표시되지 않는보기에서도 마찬가지이므로 사용자가 제거 할 수없는 유효성 검사 메시지가 표시됩니다.

유효성 속성이 디자인에 맞지 않기 때문에 RequiredIf 유효성 검사 속성도 찾고 있지 않습니다. 필드는 하나의 상황에서만 필요하며 종속성을 위해 모든 뷰 모델에서 불필요한 테이블의 추가 필드를 고수하고 싶지 않습니다.

필자가 원했던 것은 DataAnnotations 방식이 아닌 Ad-hoc 방식으로 하나의보기에서 한 필드에 대해 필수 필드 유효성 검사를 활성화 할 수 있기를 원했습니다.

필드에 대한 마크 업을 만들 때 data-val-* 속성을 지정하는 것이 좋습니다 (HtmlHelper.TextBoxFor 서명 끝의 HtmlAttributes 개체를 통해). 내가 올바르게 이해한다면, 이것은 필요한대로 필드를 다루기위한 JS의 눈에 거슬리지 않은 유효성 확인에 도움이 될 것입니다.

하지만 이것은 ... 해킹이 너무 과장된 것 같습니다. 눈에 잘 띄지 않는 유효성 검사 지원은 상위 수준의 코드로 침투 할 것입니다. 이 일을 더 우아한 방법이 있습니까? jQuery 유효성 검사 함수 호출을 사용하면 내가 원하는 것을 만들 수있다.

답변

0

데이터 val 접근법에 코드 냄새가있을뿐만 아니라 최종 사용자가 눈에 거슬리지 않는 유효성 검사를 수행하지 않는 클라이언트를 사용하고 있기 때문에 신뢰할 수 없습니다. 클라이언트 측 검증은 사탕 같다. 항상 서버 측 유효성 검사가 있어야합니다.

이것은보기 모델에 데이터 모델을 사용할 때의 문제입니다. 올바른 접근 방식은 각보기에 대해 별도의보기 모델을 만드는 것입니다. 모델보기를 공유하고 다른 뷰에 대해서만 별도의 뷰 모델을 생성하면됩니다. 두 경우 모두 고유 한보기가 있으면 고유 한보기 모델이 필요합니다.

+0

동의어 코드는 서버 측 유효성 검사가 필요합니다. 나머지는 내 애플 리케이션에 대한 의미에 대해 생각합니다. 그래도 고마워. –

관련 문제