通过继承ValidationAttribute并实现IClientModelValidator接口,可扩展ASP.NET Core模型验证,支持前后端自定义规则,如FutureDateAttribute验证日期是否为将来时间,并通过jQuery Validate实现客户端验证。

ASP.NET Core 中的模型验证通过 IModelValidator 和 ValidationAttribute 实现,但若要扩展验证逻辑或集成自定义规则,通常使用自定义验证特性或客户端验证适配器。以下是如何扩展模型验证提供程序的关键方式。
继承 ValidationAttribute 并重写 IsValid 方法,实现特定业务规则。
public class FutureDateAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value is DateTime date && date < DateTime.Now)
        {
            return new ValidationResult("日期必须是将来时间。");
        }
        return ValidationResult.Success;
    }
}
在模型中使用:
public class Appointment若需将验证规则输出到前端(如 jQuery Validate),可让自定义特性实现 IClientModelValidator 接口。
public class FutureDateAttribute : ValidationAttribute, IClientModelValidator
{
    public void AddValidation(ClientModelValidationContext context)
    {
        context.Attributes.Add("data-val-futuredate", this.ErrorMessage);
    }
}
然后在客户端注册 jQuery 验证方法:
$.validator.addMethod("futuredate", function (value) {可通过替换或扩展现有的 ModelValidatorProvider 来影响整个应用的验证行为。
services.Configure<MvcOptions>(options =>
{
    options.ModelValidatorProviders.Insert(0, new CustomModelValidatorProvider());
});
适用于需要根据上下文动态生成验证规则的复杂场景。
基本上就这些。核心是结合 ValidationAttribute 与 IClientModelValidator,按需扩展前后端验证逻辑。
以上就是ASP.NET Core 中的模型验证提供程序如何扩展?的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号