2014-02-16 45 views
1

我想有範圍驗證在我的班級我的類中定義我的一系列的價值參數在我fluentvalidation規則

public class FieldViewModel 
    { 
     public string FieldName { get; set; } 
     public string FieldValue { get; set; } 
     public string MinRange { get; set; } 
     public string MaxRange { get; set; } 
     public List<int> Validations { get; set; } 

    } 

如何讓MinRange和我班的MaxRange的價值傳遞給 InclusiveBetween (MinRange,MaxRange)

public class FieldModelValidator : AbstractValidator<FieldViewModel> { 

//!!!--MinRange and MaxRange not recognized in InclusiveBetween 
RuleFor(x => x.FieldValue) .InclusiveBetween(MinRange ,MaxRange) .When(w => w.Validations.Any(x => x.Validations.Contain(2))) 

} 

回答

0

我發現我的問題的方式

其實我需要當前對象的其他財產

我們可以有它的必然選擇方法的重載之一

public class FieldModelValidator : AbstractValidator<FieldViewModel> { 
    { 
    public FieldModelValidator() 
    { 
     RuleFor(x => x.FieldValue).Must(RangeValidation).When(w => w.Validations.Any(x =>  x.Validations.Contain(2))) 
    } 

    private bool RangeValidation(FieldViewModel field, String value) 
    { 
       int val =int.Parse(value); 

      if(val >= field.MinRange && val <= field.MaxRange) 
      { 
       return true; 
      } 
      return false; 


    } 


    } 

More Info

0

見本article

public class Validator 
    { 
     public AndClass IsNumber(int val) 
     { 
      int n; 
      bool isNumeric = int.TryParse(val.ToString(), out n); 
      if (isNumeric) 
       return new AndClass(Convert.ToInt32(val)); 
      throw new Exception(";The value should be number";); 
     } 
    }