ASP.NET Core-自定义模型验证

用户名

在MVC中,当我们将模型发布到操作上时,我们将执行以下操作以针对该模型的数据注释验证模型:

if (ModelState.IsValid)

如果我们将属性标记为[Required],则ModelState.IsValid将验证该属性是否包含值。

我的问题:如何手动构建和运行自定义验证器?

PS我只在谈论后端验证器。

柯克·拉金(Kirk Larkin)

在.NET Core中,您可以简单地创建从继承的类ValidationAttribute您可以在ASP.NET Core MVC文档中查看完整的详细信息

这是直接从文档中获取的示例:

public class ClassicMovieAttribute : ValidationAttribute
{
    private int _year;

    public ClassicMovieAttribute(int Year)
    {
        _year = Year;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        Movie movie = (Movie)validationContext.ObjectInstance;

        if (movie.Genre == Genre.Classic && movie.ReleaseDate.Year > _year)
        {
            return new ValidationResult(GetErrorMessage());
        }

        return ValidationResult.Success;
    }
}

我已根据您的问题要求对示例进行了修改,以排除客户端验证。

为了使用这个新属性(同样,取自文档),您需要将其添加到相关字段中:

[ClassicMovie(1960)]
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }

这是另一个确保值是的简单示例true

public class EnforceTrueAttribute : ValidationAttribute
{
    public EnforceTrueAttribute()
        : base("The {0} field must be true.") { }

    public override bool IsValid(object value) =>
        value is bool valueAsBool && valueAsBool;
}

这以相同的方式应用:

[EnforceTrue]
public bool ThisShouldBeTrue { get; set; }

编辑:要求的前端代码:

<div asp-validation-summary="All" class="text-danger"></div>

选项为全部,仅模型或无。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP Net Core Web API自定义模型验证

如何在ASP.NET Core中实现自定义模型验证?

关于模型验证ASP.NET Core MVC的自定义错误消息

ASP.NET Core Web API中用于整数值的自定义模型验证器

ASP.NET Core自定义验证创建模型的新实例

ASP.NET CORE:自定义验证

ASP.Net Core v3.1 MVC ajax表单中的自定义模型验证似乎无法正常工作

具有复杂模型的asp.net Core 2自定义模型活页夹

如何自定义ASP.Net Core模型绑定错误?

通过ASP.Net Core中的主体进行自定义模型绑定

ASP.NET Core身份模型自定义选择列表

ASP.Net Core API 将模型 int Id 绑定到自定义 Id 对象

将自定义验证添加到ASP.NET Core的JWT令牌中?

自定义验证的错误消息未显示 asp.net core

自定义身份验证ASP.NET Core Web API

是否可以在ASP.NET Core中使用自定义ModelState验证提供程序?

ASP.NET Core 3.1的自定义身份验证处理程序的授权失败?

2个属性的浮动范围Asp .Net Core之间的自定义验证

自定义客户端验证不会在ASP.NET Core中触发

ASP.NET Core自定义验证错误消息未本地化

ASP.Net Core MVC-自定义属性的客户端验证

在ASP.NET Core中使用Authorize属性和自定义Cookie身份验证

ASP.Net-Core中的自定义身份验证

ASP.NET Core自定义验证属性本地化

具有自定义身份验证类型的ASP.NET Core JWT

Asp.Net Core 3.0 自定义控件验证不起作用

ASP.NET Core JWT承载令牌自定义验证

ASP.NET Core自定义验证属性未触发

在ASP.NET Core中对自定义密码验证器进行单元测试