在注册表单中,我使用EmailAddress属性来验证用户电子邮件。
public class RegisterViewModel
{
[Required(ErrorMessage = "Pole wymagane")]
[Display(Name = "Email")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
}
如果验证失败,是否有机会显示电子邮件地址有什么问题?例如'oops,我看到你的电子邮件地址包含空格'
答案 0 :(得分:1)
您必须为此添加另一个验证。使用[RegularExpression]
public class RegisterViewModel
{
[Required(ErrorMessage = "Pole wymagane")]
[RegularExpression(@"^\S*$", ErrorMessage = "Email Address cannot have white spaces")]
[Display(Name = "Email")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
}
答案 1 :(得分:0)
您可以为电子邮件定义自己的正则表达式:
// built-in [EmailAddress] does not allow white spaces around email
public const string EmailValidationRegEx = @"^\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*$";
注意:我刚刚在现有.NET regex pattern for email match周围添加了空格:
"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
现在您可以使用此新的正则表达式模式代替[EmailAddress]
属性:
public class RegisterViewModel
{
private string _email;
[Required(ErrorMessage = "Pole wymagane")]
[Display(Name = "Email")]
[DataType(DataType.EmailAddress)]
[RegularExpressionWithOptions(EmailValidationRegEx, ErrorMessage = "Invalid email")]
public string Email
{
get
{
if (!string.IsNullOrEmpty(_email))
{
return _email.Trim();
}
return string.Empty;
}
set
{
_email = value;
}
}
}
请注意,我已经修改了吸气剂并返回_email.Trim()
,这可以确保在使用电子邮件值之前,我们总是摆脱多余的空格。