public ValidationResult build() { return new ValidationResult(this); } }
public class SearchViewModel : IValidatableObject { public DateTime? StartDate { get; set; } public DateTime? EndDate { get; set; } // other properties ... // will be called automatically to check ModelState.IsValid public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (StartDate > EndDate) { yield return new ValidationResult("EndDate must be greater than StartDate", "EndDate"); } // other checks here, also yield ValidationResult ... } }
public ValidationResult ValidateCommand(MakeCustomerGold command) { var result = new ValidationResult(); if (Customer.CanMakeGold(command.CustomerId)) { // "OK" logic here } else { // "Not OK" logic here } }
public class SomeModel: IValidatableObject { public string anyAdditionalInc {get; set;} public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (this.anyAdditionalInc != "Yes") { yield return new ValidationResult("You must select yes"); } } }
public class Department : IValidatableObject { public int? BossId { get; set; } public DateTime? HeadShipDate { get; set; } ... public IEnumerable<ValidationResult> Validate( ValidationContext validationContext ) { if( BossId.HasValue && !HeadShipDate.HasValue ) { yield return new ValidationResult( "HeadShipDate is required if BossId is selected.", new[] { "HeadShipDate" } ); } } }
[System.AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] public class CheckboxRequired : ValidationAttribute, IClientValidatable { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value.GetType() != typeof(bool) || (bool)value == true) return ValidationResult.Success; return new ValidationResult("This checkbox must be checked."); } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = "This checkbox must be checked.", ValidationType = "CheckboxRequired" }; yield return rule; } }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) { decimal val = 0; ValidationResult ret = new ValidationResult("Must be a valid decimal"); ValidationResult rangeRet = new ValidationResult(String.Format("Number must be between 0 and {0}", double.MaxValue.ToString()); if (decimal.TryParse(value.ToString(), out val) ) return ValidationResult.Success; else if (value < 0 || value > double.MaxValue) return rangeRet; else return ret; }
return new ValidationResult("End date must be later than start date!"); else {return new ValidationResult("End date is expected.");}
public ValidationResult validateInput(Input input) { ValidationResult result = new ValidationResult(); if (input.someField() == null) { result.addError("Some field cannot be null"); } //etc return result; }