c# - 如果在 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() 而不是使用属性来检查传递的字符串正确性?我究竟做错了什么?
解决方案
推荐阅读
- r - 尝试在 R 的应用函数中使用 tryCatch
- haskell - Confused about using `Either` during function call and Multiple use of `Right`
- python - "Pyaudio" pip install fails for every package even after upgrading pip
- amazon-web-services - Does Lambda event source mappings support streams in other regions?
- python - Dynamically generated schedule interval?
- typescript - 无法在 Typescript 中推断父接口的通用参数
- kotlin - How can I throw an SQLServerException (or SQLException) with Mockito?
- kubernetes - Kubernetes Cassandra java.lang.IllegalStateException: Unable to compute ceiling for max when histogram overflowed
- angular - No validation by default until fill fields in angular
- html - Angular Material - Setting custom style for matInput when disabled