Asp.net mvc mvc[DataType(DataType.EmailAddress)无验证
我在电子邮件字段中使用此代码:Asp.net mvc mvc[DataType(DataType.EmailAddress)无验证,asp.net-mvc,asp.net-mvc-3,data-annotations,Asp.net Mvc,Asp.net Mvc 3,Data Annotations,我在电子邮件字段中使用此代码: [Required] [DataType(DataType.EmailAddress)] [Display(Name = "Email address")] public string Email { get; set; } [DataType(DataType.EmailAddress)]不起作用(验证不会在非客户端的服务器上进行) 我不确定是应该实现自己的自定义属性,还是可以使用MVC3附带的属性 如果我需要的话,你能建议我一
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
[DataType(DataType.EmailAddress)]
不起作用(验证不会在非客户端的服务器上进行)
我不确定是应该实现自己的自定义属性,还是可以使用MVC3附带的属性
如果我需要的话,你能建议我一个创建自定义属性的解决方案吗
我还阅读了一些额外的扩展,例如
你能给我建议一下吗?目前我已经用 数据注释 它只是工作,你添加他们的库与NuGet
using DataAnnotationsExtensions;
[Required]
[DataType(DataType.EmailAddress)]
[Email]
public string Email { get; set; }
只需使用[EmailAddress]即可使用常用的DataAnnotations库
using System.ComponentModel.DataAnnotations;
[Required]
[EmailAddress]
public String Email { get; set; }
同样仅供参考,以下是此验证的正则表达式版本:
[RegularExpression(@"^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$", ErrorMessage = "Email is not valid")]
public String Email {get; set;}
祝你好运!也许这会对某人有所帮助。以下内容对我有用
[Required(ErrorMessage = "*")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
但在以下情况下不起作用
[Required(ErrorMessage = "*")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
我使用的是
mvc5
&.net4.5
看起来所有的答案都集中在数据模型上,而这个问题可能会受到视图本身的影响
MVC.NET 4.5上的以下内容正常工作:
数据模型:
[Required]
[DataType(DataType.EmailAddress)]
[DisplayName("Email")]
public string Email { get; set; }
Razor视图:
@Html.LabelFor(model => model.Email)
@Html.EditorFor(model => model.Email)
注意:不需要添加[EmailAddress]属性。如果在视图中使用[DataType(DataType.EmailAddress)]和@Html.EditorFor(),应该可以
正如rich.okelly所强调的,在您希望将输入呈现为
时,问题在于视图
级别,您需要在视图
中使用EditorFor()
而不是TextBoxFor()
,而EditorFor()
将呈现:
<input type="email" />
<input type="text" />
因此,为了验证您输入的电子邮件地址,您只需(与EditorFor()
)结合使用:
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
这样,您为电子邮件输入的值将始终得到验证,但如果您不为电子邮件输入值,则不会发生任何事情(除非您指定了
[必需]
属性),表单将以空电子邮件地址提交。我也有类似问题,只是使用了正则表达式(…)
执行电子邮件地址验证。请在无效时展开。DOM中的输入元素(如果使用HTML.InputFor(m=>m.email)
应具有type=“email”
属性集。我对我的问题进行了编辑,电子邮件字段未经验证客户端和服务器JonnyGold找到我的答案,我认为也可以解决您的问题。谢谢您的帮助message@GibboK看看Hey escist,试试这个:[正则表达式(@“^[a-Za-z0-9](([\.-]?[a-Za-z0-9]+)*)@([a-Za-z0-9]+)(([\.-]?[a-Za-z0-9]+)*)\.([A-Za-z]{2,})$”,ErrorMessage=“电子邮件无效”)]“已经停止用正则表达式验证电子邮件地址了@Luc你知道吗,甚至EmailAddressAttribute
也用正则表达式验证地址吗?@RobertKoritnik可能是这样,但我相信大公司做的事情远比随机评论重要得多。此外,如果正则表达式被证明是错误的,很可能是错误的,那么它会被删除。”可以为每个人集中更新(只需更新.NET)。我仍然讨厌“它是否包含@符号”之外的验证但是我更喜欢语言功能,而不是硬编码正则表达式。@Luc:最好的方法当然是有一些类似于Uri
类型的Email
类型。然后你可以简单地问它什么是私有部分或TLD,你就会得到答案。它在转换方面也会更好目前无法使用.net使用的现有正则表达式来处理的电子邮件地址。必须自行解析并屏蔽电子邮件。通常使用正则表达式…就像我所做的那样…;)似乎[DataType(DataType.EmailAddress)]属性仅在[Required]出现时才进行验证属性。如果您只想验证条目是否存在,则[EmailAddress]属性更适合输入值a@a表单已提交,并且在客户端和服务器上都通过了验证。如果在模型中使用EmailAddress,则会在客户端通过,而在服务器端失败。但是,这不起作用
,并且目前没有其他asp标记可用:[EmailAddress]