我正在使用[EmailAddress]
属性来验证我的电子邮件输入文本字段,如下所示
[EmailAddress]
public string NewBusNotificationEmail { get; set; }
对于我的测试,我尝试了以下方法
test
- 验证失败
test@
- 验证失败
test@test.
- 验证失败
但是,当我尝试test@test
时 - 验证通过
我还注意到它不会像tets@test.test
那样测试化妆后缀 - 验证通过。对于test@test
,它应该是验证失败。为什么不呢?如何解决这个问题?
如果你想限制到某个域,你可以使用Regex
。
喜欢这个:
[RegularExpression(@"^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
或者,您可以创建一个自定义属性并为某些域添加一些Black List | White List
。这是自定义属性的一个例子,
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class EmailAddressAttribute : RegularExpressionAttribute
{
private const string pattern = @"^w+([-+.]*[w-]+)*@(w+([-.]?w+)){1,}.w{2,4}$";
static EmailAddressAttribute()
{
// necessary to enable client side validation
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAddressAttribute), typeof(RegularExpressionAttributeAdapter));
}
public EmailAddressAttribute() : base(pattern)
{
}
}
参考资料:友情链接