2015-07-27 10 views
7

sto testando un PUT con due string:FluentValidation come verificare la lunghezza se la stringa non è nulla?

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

e ho provato con una regola come:

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)); 
    }); 
} 

come non mi dispiace per ottenere un null su tali proprietà, ma io desidera testare il Lengthquando la proprietà non è un null.

Qual è il modo migliore per applicare le regole quando una proprietà è nullable e vogliamo solo verificare se non è nulla?

risposta

3

Uno dei modi potrebbe essere:

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

preferisco la seguente sintassi:

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

Penso che questo codice è più pulito e ha una migliore leggibilità. – Rahatur

Problemi correlati