Using IValidatableObject to implement conditional validation in ASP.NET MVC
Conditional validation allows you to specify validation rules based on specific conditions in your model. In ASP.NET MVC, data annotations provide a straightforward way to define these rules, but they lack flexibility for more complex conditional scenarios.
Consider the following model and view where we want to conditionally require the "Senior.Description" property based on the selection of the "IsSenior" property:
<code class="language-csharp">public class Person : IValidatableObject { [Required] public string Name { get; set; } public bool IsSenior { get; set; } public Senior Senior { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (IsSenior && string.IsNullOrEmpty(Senior.Description)) yield return new ValidationResult("必须提供描述。"); } }</code>
In ASP.NET MVC 3 (and higher), you can leverage the IValidatableObject interface and implement the Validate method to handle conditional validation more efficiently. In the Validate method, you can specify conditional rules and return a ValidationResult object for any validation failure.
By implementing the Validate method as shown in the code snippet, we effectively add a conditional validation rule that requires the "Senior.Description" property when the "IsSenior" property is set to true. This approach provides a cleaner and more flexible way to implement conditional validation in ASP.NET MVC applications.
The above is the detailed content of How to Implement Conditional Validation in ASP.NET MVC Using IValidatableObject?. For more information, please follow other related articles on the PHP Chinese website!