2012-03-06 1 views
2

FluentValidation의 in에 대한 기본 오류 메시지를 변경하는 방법이 있습니까?fluentvalidation이 int/long에 대한 기본 오류 메시지를 변경합니다.

더 복잡한 유형에 대한 유효성을 설정할 수 있지만 '입력 한 데이터는 얻을 수없는 int'스타일이 아닙니다.

다음과 같은 오류가 있습니다. '값 x는 y에 유효하지 않습니다.'또는 그 행에있는 것이 있습니다.이를 덮어 쓸 수있는 방법이 있습니까?

답변

3

을 따르십시오.

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    DefaultModelBinder.ResourceClassKey = "Messages"; 
} 

을 다음 App_GlobalResources/Messages.resx 내부의 키 PropertyValueInvalid을 정의 : 첫 번째 가능성은 응용 프로그램 시작에 DefaultModelBinder.ResourceClassKey 속성을 재정의하고 사용자 정의 리소스 파일을 가리 키도록하는 것입니다.

또 다른 가능성은 제레미 스키너 (Jeremy Skinner)의 제안에 따라 뷰 모델에 backing field을 사용하는 것입니다.

이 이유는이 오류 메시지가 필드에서 유효성 검사를 수행하기 전에 기본 모델 바인더에 의해 생성되기 때문입니다. 필드의 유효성을 검사하려면 먼저 값을 할당해야합니다. 모델 바인딩 중에 유효한 정수를 나타내지 않는 문자열을 정수로 변환하려고 시도하면 기본 모델 바인더가 기본 메시지를 할당합니다.

+0

"영웅 상"이 있었다면! – iwayneo

+0

@DarinDimitrov 이렇게하면 기본 메시지가 변경됩니다. 하지만 메시지에 필드 이름을 어떻게 넣을 수 있습니까? –

+0

http://stackoverflow.com/questions/4767457/fluent-validations-error-validation-type-names-in-unobtrusive-client-validation – iwayneo

0

이를 무시할 수도 있습니다.

는 아래의 링크 그것을 달성하기 쉬운/청소 방법이 없습니다 http://fluentvalidation.codeplex.com/wikipage?title=Customising

+0

이들 모두는 RuleFor - int/long 데이터 형식 유효성 검사가 프레임 워크에 의해 암시되어 있으므로 – iwayneo

+1

-1에 걸리기위한 RuleFor가 없습니다. 이것은 int/long/DateTime 유형에는 작동하지 않습니다. –

관련 문제