2015-07-27 34 views
7

Tôi đang thử nghiệm một PUT với hai string:FluentValidation làm thế nào để kiểm tra chiều dài nếu chuỗi không phải là null?

company.CurrencyCode = request.CurrencyCode ?? company.CurrencyCode; 
company.CountryIso2 = request.Country ?? company.CountryIso2; 

và tôi đã cố gắng với một quy tắc như:

public UpdateCompanyValidator() 
{ 
    RuleSet(ApplyTo.Put,() => 
    { 
     RuleFor(r => r.CountryIso2) 
       .Length(2) 
       .When(x => !x.Equals(null)); 

     RuleFor(r => r.CurrencyCode) 
       .Length(3) 
       .When(x => !x.Equals(null)); 
    }); 
} 

như tôi không quan tâm để có được một null trên những tài sản, nhưng tôi muốn kiểm tra Lengthkhi thuộc tính không phải là null.

Cách tốt nhất để áp dụng quy tắc khi thuộc tính là nullable và chúng tôi chỉ muốn thử nghiệm nếu nó không phải là rỗng?

Trả lời

3

Một trong những cách sẽ là:

public class ModelValidation : AbstractValidator<Model> 
{ 
    public ModelValidation() 
    { 
     RuleFor(x => x.Country).Must(x => x == null || x.Length >= 2); 
    } 
} 
6

tôi thích cú pháp như sau:

When(m => m.CountryIso2 != null, 
    () => { 
     RuleFor(m => m.CountryIso2) 
      .Length(2); 
    ); 
+0

Tôi nghĩ rằng mã này là sạch hơn và có khả năng đọc tốt hơn. – Rahatur

Các vấn đề liên quan