使用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
的电子邮件。
为了清楚起见,下面是类DataTypeAttribute
的IsValid
的实现:
public override bool IsValid(object value) { return true; }
我认为你需要在html代码中添加一个组件Html.ValidationMessageFor
。 该组件显示validation。
代码可能是(使用剃刀):
@Html.TextBoxFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email)
尝试一下。