首页 > 解决方案 > 如果在 C# 中验证失败,如何使用 RegularExpressionAttribute 通过抛出异常来验证字符串属性?

问题描述

我正在编写一个简单的 .NET Core 3.1 API 应用程序。我想使用内置在 RegularExpressionAttribute 中的 C# 来验证 MailAddress,然后使用 EF Core 将经过验证的实体保存到数据库中。这是我的示例代码:

public class UserEntity
{
    [Key]
    public int UserId { get; set; }
    [Required]
    [StringLength(maximumLength: 100, MinimumLength = 3)]
    public string Username { get; set; }
    [Required]
    [Column(TypeName = "varchar(100)")]
    [RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")]
    public string MailAddress { get; set; }
    [Required]
    [MaxLength(64)]
    public byte[] PasswordHash { get; set; }
}

我预计,如果我要分配一个不匹配的正则表达式,则会引发异常。

var newUser = new UserEntity()
            { MailAddress = signUpData.MailAddress, Username = signUpData.Username, PasswordHash = passwordHash };

这里什么都没有发生,应用程序继续执行,并且 UserEntity 被保存到我的数据库中。如果邮件验证失败,我希望抛出异常。如何做到这一点?我是否必须显式调用 Regex.Match() 而不是使用属性来检查传递的字符串正确性?我究竟做错了什么?

标签: c#regexapi.net-core

解决方案


推荐阅读