1

여러 필드가 필요한 검색 양식을 작성 중입니다. 라디오 버튼 필드 입력과 같이 요구되는지를 나타낸다 : 연관된 라디오 버튼이 선택되기 때문에 상기특정 조건에서 mvc3 클라이언트 측 유효성 검사 사용 안 함

경우
[ ] Field 1 
[.] Field 2 
    Field 3 
[ ] Field 4 

, Field 2Field 3 현재 요구된다. 이를 수행하기 위해 유효성 검사 속성 RequiredIf을 구현했으며 제대로 작동합니다.

다른 문제는 내 문제입니다. 이 경우 Field 1의 최소 길이 유효성 검사도 있습니다. Field 1에 최소 길이 유효성 확인을 따르지 않는 값이 있으면 양식이 유효하지 않아 제출할 수 없습니다.

필자는 불필요한 입력란에서 유효성 검사를 비활성화하는 방법이 필요합니다. (또한 다른 라디오 버튼이 선택되면 다시 설정할 수 있습니다).

필드를 "disabled = disabled"로 설정할 수 없으므로 클라이언트 요구 사항으로 인해 문제가 해결됩니다.

data-val 속성을 제거하거나 해당 필드에서 false으로 설정 한 다음 내 양식을 다시 구문 분석하여 비참하게 실패했습니다.

편집 : 그냥 확인하십시오. 문제는 클라이언트 측 유효성 검사입니다.

+1

수 당신 선택적으로 명확 modelState 오류? –

+0

지금 당장 구현하는 것이 좋습니다. 하지만 여전히 클라이언트 측 유효성 검사가 제대로 작동하기를 바랍니다. – boulaycote

답변

1

두 가지 유효성 검사가 발생합니다 (클라이언트와 서버 측). 따라서 data-val 속성을 제거해도 도움이되지 않습니다.

이제 모델에서 [특성]을 사용하여 이러한 유효성 검사 규칙을 추가한다고 생각합니다. 이 방법으로는 조건부 유효성 검사를 수행 할 수 없다고 생각합니다.

이 경우 FluentValidation이 도움이 될 수 있습니다. http://fluentvalidation.codeplex.com/

그것은 할 매우 간단합니다, 당신은 같은 것을 할 수 있어야한다 : 컨트롤러에서

RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled); 
+0

그것은 꽤 산뜻 해 보인다! 그러나 문제가되는 클라이언트 측 유효성 검사가 어떻게 도움이되는지 알지 못합니다. – boulaycote

+0

그것은 클라이언트와 서버 모두를 수행 할 것입니다. –

0

필드를 "사용 안 함"으로 설정하면 의도 한대로 작동합니다. 고객은이 요구 사항에 대해 마음이 바뀌 었습니다. 때로는 최상의 솔루션입니다.

더 나은 솔루션을 위해 아직 열어 놓았습니다.

편집 : 나는 검증 플러그인에 대한 문서 검색에 대해 생각하지 않았다

. rules ("remove", rules)처럼 사용할 수있는 꽤 흥미로운 방법이있는 것 같습니다.

관련 문제