2011-09-14 1 views
6

유효성 검사 메시지 "값 xxx는 yyy에 유효하지 않습니다"가 나타납니다. 그것은 더블 타입에 대한 잘못된 값을 게시 할 때 발생합니다. 나는 그것을 어떻게 바꿀 지 모른다.FluentValidation의 기본 ASP.NET MVC 메시지 무시

RuleFor(x => x.Foo) 
    .NotEmpty() 
    .WithMessage("Put your custom message here"); 

하고 자원 지역화 된 메시지를 사용하려면 :

RuleFor(x => x.Foo) 
    .NotEmpty() 
    .WithLocalizedMessage(() => MyLocalizedMessage.FooRequired); 

답변

7

을 불행하게도이 FluentValidation이 가지고있는 것이 아닙니다

+0

ASP.NET MVC 팀에 연락을 시도 했습니까? – SiberianGuy

+0

예, MVC2의 미리보기 기간 동안 여러 번 제기했지만 변경되지 않았습니다. –

+0

한번 더 해보 죠. http://forums.asp.net/p/1721550/4601626.aspx/1?p=True&t=634518558226229075 – SiberianGuy

0

당신은 오류 메시지를 사용자 정의 할 .WithMessage() 방법을 사용할 수 있습니다 오버라이드 기능 - MVC 유효성 검사를위한 확장 성 모델은 여러 곳에서 다소 제한적이며이 특정 메시지를 무시할 수있는 방법을 찾지 못했습니다.

다른 방법으로는 뷰 모델에 두 개의 속성을 정의 할 수 있습니다. 하나는 문자열로, 다른 하나는 null 허용 이중으로 정의하는 것입니다. MVC 바인딩 목적으로 string 속성을 사용하면 double 속성은 가능한 경우 변환을 수행합니다. 그러면 유효성 검사를 위해 다음을 사용할 수 있습니다.

public class FooModel { 
    public string Foo { get; set; } 

    public double? ConvertedFoo { 
     get { 
      double d; 
      if(double.TryParse(Foo, out d)) { 
      return d; 
      } 
      return null; 
     } 
    } 
} 


public class FooValidator : AbstractValidator<FooModel> { 
    public FooValidator() { 
     RuleFor(x => x.ConvertedFoo).NotNull(); 
     RuleFor(x => x.ConvertedFoo).GreaterThan(0).When(x => x.ConvertedFoo != null); 
    } 
} 
+1

작동하지 않습니다. ASP.NET에서 문자열을 double로 변환하려고하면 오류가 나타납니다. – SiberianGuy