【发布时间】:2011-11-06 17:02:09
【问题描述】:
在我的注册表单中,我想使用 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 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>
我还在布局中包含了 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>
【问题讨论】:
-
只是一点旁注。查看 NuGet 包 DataAnnotationsExtensions。它有一个您可以使用的电子邮件数据注释 :) dataannotationsextensions.org
-
请考虑用更强大的东西替换基于正则表达式的电子邮件验证,因为它会因合法地址太多而失败,包括
foo+bar@test.com、foo@bar.museum,并且不会在应该失败的时候失败,就像foo..x@test.com。我建议您使用 EmailVerify.NET,这是一个强大的 .NET email validation 组件,您可以轻松地与您的 ASP.NET MVC 项目集成。免责声明:我是 EmailVerify.NET 的首席开发人员。
标签: jquery asp.net-mvc regex asp.net-mvc-3 validation