使用DataAnnotations和DataType进行电子邮件模型validation

我有以下型号:

public class FormularModel { [Required] public string Position { get; set; } [Required] [DataType(DataType.EmailAddress)] public string Email { get; set; } [Required] public string Webcode { get; set; } } 

所需的validation工作正常。 但是,当我尝试使用数据types,它不反应。

这是我的电子邮件控制的razor代码:

  @Html.TextBoxFor (model => model.Email, new { @style = "width: 175px;", @class = "txtField" } ) * 

那么,有谁知道答案?

TIA

DataType属性用于格式化目的,而不是用于validation。

我build议你使用ASP.NET MVC 3 Futures进行电子邮件validation。

示例代码:

 [Required] [DataType(DataType.EmailAddress)] [EmailAddress] public string Email { get; set; } 

如果您碰巧使用.NET Framework 4.5 ,则现在有一个内置的EmailAddressAttribute ,位于System.ComponentModel.DataAnnotations.EmailAddressAttribute

DataAnnotationsExtensions项目具有您可以使用的电子邮件属性 。

我已经看过源代码(通过reflection器反向工程), DataType变体实际上甚至没有实现! (这是DateType.Date

所以它不会工作。

我会亲自使用RegexValidation的电子邮件。


为了清楚起见,下面是类DataTypeAttributeIsValid的实现:

 public override bool IsValid(object value) { return true; } 

我认为你需要在html代码中添加一个组件Html.ValidationMessageFor 。 该组件显示validation。

代码可能是(使用剃刀):

 @Html.TextBoxFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email) 

尝试一下。