m.e*_*son 12 c# asp.net-mvc jquery email-validation unobtrusive-validation
我正在使用EmailAddressAttribute在我的模型上使用.
问题是当我使用(完全有效)的电子邮件地址时
óscar@yahoo.com
Run Code Online (Sandbox Code Playgroud)
它说这是无效的.
模型:
public class ForgotPasswordViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
public CmsContentPagesModel PageCmsContent { get; set; }
public CmsContentPagesModel PageCmsContentInfoIcon { get; set; }
public CmsContentPagesModel PageCmsContentRightPanel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是属性的问题,还是以某种方式必须指定法国电子邮件是否可以?
呈现的输入框:
<div class="col-md-5">
<input class="form-control" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" type="text" value="" />
<span class="field-validation-valid text-danger" data-valmsg-for="Email" data-valmsg-replace="true"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
我还从客户端验证中提取了正则表达式,以下行返回false
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( 'óscar@yahoo.com' );
Run Code Online (Sandbox Code Playgroud)
您需要在jQuery Validation Plugin中为电子邮件验证设置自定义正则表达式:
$.validator.methods.email = function( value, element ) {
return this.optional( element ) || /INSERT_YOUR_REGEX_HERE/.test( value );
}
Run Code Online (Sandbox Code Playgroud)
jQuery Validation Plugin使用RFC 5322 Internet消息协议规范定义有效的电子邮件.该定义不允许在本地部分使用非拉丁字母.项目README.md的相关摘录:
关于电子邮件验证的重要说明.从版本1.12.0开始,此插件使用与HTML5规范建议供浏览器使用的相同的正则表达式.我们将遵循他们的主导并使用相同的检查.如果您认为规范有误,请向他们报告问题.如果您有不同的要求,请考虑使用自定义方法.如果您需要调整内置验证正则表达式模式,请按照文档进行操作.
电子邮件地址国际化由另一个规范定义 - RFC 6530概述和国际化电子邮件框架.它使用术语SMTPUTF8.查看Wikipedia上的电子邮件地址页面以获取更多信息和支持详细信息
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |