2011-09-14 20 views
6

için varsayılan ASP.NET MVC iletisini geçersiz kıl Doğrulama iletisini "y x için değer yyy için geçerli değil" alıyorum. Çift tip için yanlış değer yayınladığımda olur. Nasıl değiştireceğimi bilmiyorum.FluentValidation

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

ve kaynakları ile yerelleştirilmiş mesajlar kullanmak istiyorsanız:

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

cevap

7

Ne yazık ki bu FluentValidation olan bir şey değildir

+0

dönüştürmeye çalıştığında görünür. ASP.NET MVC ekibi ile bu konuda iletişim kurmayı denediniz mi? – SiberianGuy

+0

Evet, MVC2 için önizleme sırasında birkaç kez geliştirdim, ancak hiç değişmedi. –

+0

Bir kez daha deneyelim: http://forums.asp.net/p/1721550/4601626.aspx/1?p=True&t=634518558226229075 – SiberianGuy

0

hata mesajı özelleştirmek için .WithMessage() yöntemi kullanabilirsiniz geçersiz kılma yeteneği - MVC'nin onaylaması için genişletilebilirlik modeli bir çok yerde sınırlı kalmıştır ve bu özel mesajı geçersiz kılacak bir yol bulamadım.

Kullanabileceğiniz alternatif bir yaklaşım, görünüm modelinizdeki iki özelliği tanımlamaktır - bunlardan biri dize, diğeri ise çift düğümlü olabilir. MVC bağlama amaçları için string özelliğini kullanırsınız ve double özelliği bir dönüşüm gerçekleştirir (eğer yapabilirse). Bunu doğrulama için kullanabilirsiniz:

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

Çalışmıyor. Hata, ASP.NET dize çift – SiberianGuy