Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc mvc[DataType(DataType.EmailAddress)无验证_Asp.net Mvc_Asp.net Mvc 3_Data Annotations - Fatal编程技术网

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]