asp.net mvc [电子邮件地址] 不适用于缺少后缀的情况



我正在使用[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)
{
}
}

参考资料:友情链接

相关内容

最新更新