Jav*_*fca 157 c# validation asp.net-mvc email-validation
我在验证电子邮件方面遇到了一些问题.
在我的模型中:
[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我看来:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail"}) <br />
@Html.ValidationMessageFor(m => m.ReceiverMail)
Run Code Online (Sandbox Code Playgroud)
现在,当你将场留空时,它正确地向我显示"场不能为空".但是当你填写一个无效的电子邮件地址,如:"fwenrjfw",那么表格并没有说"电子邮件无效".
如何获取表单以将输入验证为电子邮件地址?我正在寻找一些帮助.
Shi*_*nga 314
如果您使用的是.NET Framework 4.5,那么解决方案就是使用EmailAddressAttribute内部的解决方案System.ComponentModel.DataAnnotations.
您的代码应该类似于:
[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)
haz*_*nli 38
尝试Html.EditorFor帮助方法而不是Html.TextBoxFor.
小智 23
您需要使用RegularExpression属性,如下所示:
[RegularExpression("^[a-zA-Z0-9_\\.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$", ErrorMessage = "E-mail is not valid")]
Run Code Online (Sandbox Code Playgroud)
并且不要删除[必需],因为[RegularExpression]不会影响空字段.
mcf*_*fea 14
如果你还没有使用.net 4.5:
/// <summary>
/// TODO: AFTER WE UPGRADE TO .NET 4.5 THIS WILL NO LONGER BE NECESSARY.
/// </summary>
public class EmailAnnotation : RegularExpressionAttribute
{
static EmailAnnotation()
{
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAnnotation), typeof(RegularExpressionAttributeAdapter));
}
/// <summary>
/// from: http://stackoverflow.com/a/6893571/984463
/// </summary>
public EmailAnnotation()
: base(@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"
+ "@"
+ @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$") { }
public override string FormatErrorMessage(string name)
{
return "E-mail is not valid";
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
public class ContactEmailAddressDto
{
public int ContactId { get; set; }
[Required]
[Display(Name = "New Email Address")]
[EmailAnnotation] //**<----- Nifty.**
public string EmailAddressToAdd { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ith 10
我使用MVC 3.我的一个类中的电子邮件地址属性的示例是:
[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[Email(ErrorMessage = "The email address is not valid")]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)
Required如果输入是可选的,则删除.不需要正则表达式,尽管我有一个涵盖了电子邮件地址中达到RFC 2822级别的所有选项(它很长).
小智 7
[Required(ErrorMessage = "Please enter Social Email id")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)
小智 5
在 MVC5 项目中使用上述代码,它工作完全正常,但存在验证错误。只需尝试以下代码:
\n [Required]\n [Display(Name = "Email")]\n [EmailAddress]\n\n [RegularExpression(@"^([A-Za-z0-9][^'!&\\\\#*$%^?<>()+=:;`~\\[\\]{}|/,\xe2\x82\xb9\xe2\x82\xac@ ][a-zA-z0- \n 9-._][^!&\\\\#*$%^?<>()+=:;`~\\[\\]{}|/,\xe2\x82\xb9\xe2\x82\xac@ ]*\\@[a-zA-Z0-9][^!&@\\\\#*$%^?<> \n ()+=':;~`.\\[\\]{}|/,\xe2\x82\xb9\xe2\x82\xac ]*\\.[a-zA-Z]{2,6})$", ErrorMessage = "Please enter a \n valid Email")]\n\n\n public string ReceiverMail { get; set; }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
244801 次 |
| 最近记录: |