5

Fluent Validation을 위해 눈에 잘 띄지 않는 사용자 지정 유효성 검사를 구현할 방법을 찾고 있습니다. documentation에 따르면, 눈에 거슬리지 않는 검증을 지원하지 않는다고합니다.Fluent Validation을 통한 눈에 띄지 않는 사용자 지정/조건부 유효성 검사

조건부 유효성 검사 (When/Unless)와 동일합니다. FluentValidation는 ASP.NET MVC의 클라이언트 측 유효성 검사와 함께 작동하지만 모든 규칙을 지원하지 않는 것이

참고 : 나는 조건 및 기타 복잡한 검증 지원되지 않습니다 자신의 MVC documentation, 눈에 거슬리지 유효성 검사를 참조하십시오. 예를 들어, 조건을 사용하여 정의 된 규칙 (When/Unless 포함), 사용자 정의 유효성 검사기 또는 반드시 호출은 클라이언트 측에서 실행되지 않습니다. 다음 유효성 검사기는 클라이언트에서 지원됩니다

* NOTNULL /는 NotEmpty
* 일치 (정규식)
* InclusiveBetween (범위)
* 크레딧 카드
* 이메일
* EqualTo가 (크로스 속성 평등 비교)
* 길이

그래서이 방법을 알아내는 사람이 있습니까? 그렇지 않은 경우, 눈에 거슬리지 않는 사용자 정의/복합 검증에 대한 더 나은 지원을 제공하는 다른 검증 옵션이 있습니까?

+0

달성/검증하려는 내용의 구체적인 예를 제공 할 수 있습니까? 너의 정확한 시나리오는 뭐니? –

+0

글쎄, 그냥/때리는 방법은 어쨌든 상자 밖에서 눈에 거슬리지 않게 작동하지 않습니다.그것들을 위해 작동하는 해결책을 찾을 수 있다고하더라도, 그것은 한 걸음 더 가까이 다가 가게 할 것입니다. 가능성, 그것/조건없는 때 w/조건부와 함께 작동한다면, 아마도/사용자 지정 유효성 검사와 함께 작동합니다. –

답변

1

Integration with ASP.NET MVC 문서를 따라 FluentValidation을 ASP.NET MVC 3에 성공적으로 연결했습니다.

간단한 방법은 다음과 같이 Global.asax에 위해 Application_Start()에서 MVC 검증 프레임 워크에 FluentValidation를 연결하는 것입니다

FluentValidationModelValidatorProvider.Configure(); 

이 그럼 당신은 그들이 사용하는 검증을 지정하는 속성으로 POCO 클래스를 장식하실 수 있습니다. 내 경우

[Validator(typeof(PersonValidator))] 
public class Person { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public int Age { get; set; } 
} 

, 난 (사용 속성) 그렇게하려면, 실제로 비즈니스 규칙에 따라 다른 검사기에 대해 같은 POCO 클래스를 검증하기 위해 필요하지 않았다.

그런 식으로 다른 유효성 검사기를 선택하려면 "custom validator factory with an IoC container"의 문서를 따르십시오. 인터페이스 IValidatorFactory를 구현하는 ValidatorFactoryBase를 서브 클래 싱하는 FluentMvcValidatorFactory 클래스를 생성합니다. 커스텀 validator 팩토리는, 적절한 validator의 선택을 처리 할 수 ​​있습니다.

클라이언트 측 유효성 검사를 수행하려고했으나 (눈에 띄지는 않지만) 눈에 띄지 않는 유효성 검사에도 연결되는 것으로 보입니다.

<input type="text" value="" name="Email" id="Email" data-val-length-max="128" data-val-length="&amp;#39;Email&amp;#39; must be between 0 and 128 characters." data-val-email="&amp;#39;Email&amp;#39; is not a valid email address." data-val="true" class="text-box single-line"> 

는만큼 당신이 제대로 MVC에 연결, 나는 일을해야 눈에 거슬리지 생각 : 내 HTML이처럼 보이는 출력됩니다.

실제로는 클라이언트 측 또는 눈에 거슬리지 않은 유효성 검사에만 전적으로 의존하지 말고 입력 중에 사용자를 지원하는 데만 사용해야합니다. 궁극적으로 서버의 유효성을 검사해야하지만 서버 측 코드에서 동일한 FluentValidation 유효성 검사기를 사용할 수 있습니다.

+1

게시물을 보내 주셔서 감사합니다. 실제로 표준 검증이 눈에 띄지 않게 작동하는 경우 문제는 When/Unless 조건부 유효성 검사가 작동하는지 또는 사용자 정의 유효성 검사 (사용자 정의 유효성 검사 규칙을 만드는 경우)가 발생하고 있습니다. –

+0

FluentValidation을 사용하여 사용자 정의 유효성 검사 규칙 (조건부)을 정의하고 해당 규칙을 클라이언트 측 유효성 검사를위한 사용자 정의 jquery.unobtrusive.validation 규칙으로 변환하려고합니다. 그것이 지원되지 않는 것입니다. 따라서 갭을 메우기 위해 맞춤 코드가 필요합니다. 서버 게시물이 아닌 클라이언트 쪽에서 사용자 지정 규칙을 갖는 것이 얼마나 중요합니까? 어쩌면 그것은 과잉이다. FluentValidation을 사용하는 이유 중 하나는 클라이언트와 서버에 동일한 유효성 검사 규칙을 적게 작성한다는 것입니다. –

+1

나는 동의한다. 하지만 경우에 따라 일부 입력란의 확인이 필요한 경우가 많습니다 (즉, '청구와 같음'체크 박스가 선택되지 않은 경우 배송지 주소 입력란이 필요함). 나에게 이것은 공통적 인 요구 사항처럼 보입니다. 당신이 말했듯이, 이들 조건에 대해 눈에 띄지 않는 유효성 검사가 작동하지 않기 때문에 별도의 유효성 검사를 작성하지 않아도됩니다. –

관련 문제