ASPNetCore3.1自定义验证特性&多个特性的组合
创始人
2024-09-20 08:00:49
0次

在ASP Net Core 3.1中,可以通过自定义验证特性来对请求的参数进行合法性校验。但是,有时候需要同时对多个参数进行验证,并要求这些验证条件之间都成立才能通过验证。

例如,需要验证一个注册用户提交的表单,要求其中的用户名不能重复,密码必须包含数字和字母,且长度不能小于8个字符。这时候就需要对这三个条件进行组合验证,即只有这三个条件全部成立时,才能通过验证。

以下是实现组合验证的示例代码:

public class CustomValidationAttribute : ValidationAttribute
{
    public string Username { get; set; }
    public bool IncludeDigit { get; set; }
    public bool IncludeLetter { get; set; }
    public int MinLength { get; set; }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        // 验证用户名是否重复,返回错误信息或空
        var dbContext = validationContext.GetService(typeof(AppDbContext)) as AppDbContext;
        if (dbContext.Users.Any(u => u.Username == Username))
        {
            return new ValidationResult($"{Username}已存在。");
        }

        // 验证密码是否包含数字和字母,长度是否>=MinLength
        var password = value?.ToString() ?? "";
        bool hasDigit = IncludeDigit ? password.Any(c => char.IsDigit(c)) : true;
        bool hasLetter = IncludeLetter ? password.Any(c => char.IsLetter(c)) : true;
        bool hasValidLength = password.Length >= MinLength;
        if (!hasDigit || !hasLetter || !hasValidLength)
        {
            return new ValidationResult($"密码不符合要求。");
        }

        // 验证通过
        return ValidationResult.Success;
    }
}

public class RegisterUserModel
{
    [CustomValidation(Username = "admin", IncludeDigit = true, IncludeLetter = true, MinLength = 8)]
    public string Password { get; set; }
}

在上面的代码中,我们定义

相关内容

热门资讯

黑科技辅助!欢乐赢三张(辅助)... 黑科技辅助!欢乐赢三张(辅助),中至南昌卧龙真是真的有透视挂技巧(真的有辅助挂)1、打开软件启动之后...
黑科技作弊器!17麻将(作弊器... 黑科技作弊器!17麻将(作弊器),心悦麻将真是是真的有透视挂脚本(确实有辅助挂)暗藏猫腻,小编详细说...
黑科技作弊器!沐星互娱(作弊器... 黑科技作弊器!沐星互娱(作弊器),扑克棋牌插件总是真的有透视挂app(有辅助挂解惑)1、玩家可以在扑...
黑科技透视挂!八闽掌上麻将(透... 黑科技透视挂!八闽掌上麻将(透视挂),紫锋麻将果然真的有透视挂脚本(详细教程辅助)1)八闽掌上麻将辅...
黑科技开挂!华彩棋牌(开挂),... 黑科技开挂!华彩棋牌(开挂),奉化八扣一贯是真的有透视挂技巧(有辅助挂分析)奉化八扣是不是有人用挂微...
黑科技作弊器!人海大厅(作弊器... 黑科技作弊器!人海大厅(作弊器),捉住捣蛋鸡本来存在有透视挂app(有辅助挂规律)暗藏猫腻,小编详细...
黑科技外挂!同城游牛鬼(外挂)... 黑科技外挂!同城游牛鬼(外挂),大好棋牌一直有透视挂教程(竟然有辅助挂)1、下载好同城游牛鬼脚本下载...
黑科技辅助!酷玩部落电子游戏(... 您好,酷玩部落电子游戏这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩...
黑科技辅助器!乐平讨赏(辅助器... 黑科技辅助器!乐平讨赏(辅助器),老友二打一竟然是真的有透视挂技巧(有辅助挂解惑)1、这是跨平台的老...
黑科技外挂!双喜互娱(外挂),... 黑科技外挂!双喜互娱(外挂),新长虹本来是有透视挂app(确实有辅助挂)亲,关键说明,双喜互娱透视脚...