Jquery ASP.NET MVC客户端电子邮件验证不需要';行不通
在我的注册表单中,我想用MVC正则表达式进行一些客户端验证,但它不起作用。。。这是模型代码的一部分Jquery ASP.NET MVC客户端电子邮件验证不需要';行不通,jquery,asp.net-mvc,regex,asp.net-mvc-3,validation,Jquery,Asp.net Mvc,Regex,Asp.net Mvc 3,Validation,在我的注册表单中,我想用MVC正则表达式进行一些客户端验证,但它不起作用。。。这是模型代码的一部分 [Required] [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 v
[Required]
[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")]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address*")]
public string Email { get; set; }
但是消息无论如何都不想出现。。。这里怎么了
编辑
在我看来,我有这个
<div>
<div class="editor-label">
@Html.LabelFor(m => m.Email)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Email)
@Html.ValidationMessageFor(m => m.Email)
</div>
</div>
@LabelFor(m=>m.Email)
@Html.TextBoxFor(m=>m.Email)
@Html.ValidationMessageFor(m=>m.Email)
我还将jQuery库包括在我的布局中
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
@RenderSection("Head")
</head>
@视图包。标题
@渲染部分(“头”)
您还需要
1.@Html.ValidationMessageFor(m=>m.Email)
在希望消息显示的视图中
2.包括客户端验证所需的JavaScript文件。如果您使用的是不引人注目的验证,那么这将是
jQuery,
jQuery validate,
jQuery validate unobtrusive
按照这个顺序。我终于明白了。。。 在RegularExpression属性解决问题后替换Required属性) 而是这个
[Required]
[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")]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address*")]
public string Email { get; set; }
现在我有
[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")]
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address*")]
public string Email { get; set; }
现在它工作得很好 只是一个小小的旁注。查看NuGet软件包DataAnnotationsExtensions。它有一个电子邮件数据注解,你可以使用:)请考虑替换你的基于ReGEX的电子邮件验证,因为它没有太多合法的地址,包括<代码> Foo+。bar@test.com,
foo@bar.museum
并且不会在应该失败的时候失败,就像foo。。x@test.com
。我建议您使用一个强大的.NET组件,可以轻松地与ASP.NET MVC项目集成。免责声明:我是EmailVerify.NET的首席开发人员。如果你检查DOM,你能看到data val regex pattern=“^([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}.[[0-9]}.]输入的FIrebug$”,我看不到它上面的代码,。。。但我不知道为什么。。。任何地方都没有data val regex模式属性。这听起来像是依赖于订单验证属性。只有当(a)字段有值且(b)该值不符合正则表达式模式时,正则表达式验证消息才会出现。如果该字段为空,则在输入值之前,您将收到必需的
属性验证消息。