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; }
}

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

相关内容

热门资讯

大家学习交流外挂app!温岭逸... 大家学习交流外挂app!温岭逸趣麻将多功能外挂app,温岭逸趣麻将果然真的是有外挂app1、起透看视...
一秒答解辅助app!广东麻将多... 一秒答解辅助app!广东麻将多功能辅助app,广东麻将真是是有辅助app小薇(辅助器软件下载)致您一...
教学盘点透视器软件!千游科技多... 教学盘点透视器软件!千游科技多功能透视器软件,千游科技切实是真的有透视器软件一、千游科技游戏安装教程...
科技通报外挂软件!丰城棋牌多功... 科技通报外挂软件!丰城棋牌多功能外挂软件,丰城棋牌竟然有外挂软件1、每一步都需要思考,不同水平的挑战...
玩家交流透视器方法!王钓麻将多... 玩家交流透视器方法!王钓麻将多功能透视器方法,王钓麻将都是存在有透视器方法1、玩家交流透视器方法!王...
查到实测辅助器软件!小闲巴渝棋... 查到实测辅助器软件!小闲巴渝棋牌多功能辅助器软件,小闲巴渝棋牌本来真的有辅助器软件1、小闲巴渝棋牌破...
热门推荐辅助器工具!天天黄冈麻... 热门推荐辅助器工具!天天黄冈麻将多功能辅助器工具,天天黄冈麻将确实存在有辅助器工具亲,关键说明,天天...
总算了解透视挂技巧!无锡麻将多... 总算了解透视挂技巧!无锡麻将多功能透视挂技巧,无锡麻将切实真的有透视挂技巧;1、首先打开无锡麻将辅助...
玩家必看科普透视器插件!乐暴延... 玩家必看科普透视器插件!乐暴延边麻将多功能透视器插件,乐暴延边麻将好像存在有透视器插件1、乐暴延边麻...
带你了解作弊器攻略!中至赣州麻... 带你了解作弊器攻略!中至赣州麻将多功能作弊器攻略,中至赣州麻将一贯是真的有作弊器攻略1、下载好中至赣...