为什么将EmailAddressAttribute添加到属性会导致EditorFor失败?

时间:2013-03-12 14:38:23

标签: asp.net-mvc .net-4.5

我的模型对象上有一个名为EmailAddress的字符串属性。我使用Html.EditorFor为此页面上的所有字符串属性呈现输入字段,以及一个可以正常工作的自定义编辑器模板。但是,当我将EmailAddressAttribute添加到此属性时,EditorFor似乎不再将该属性检测为字符串类型,或者至少,它拒绝使用我对字符串的编辑器模板。

这有效:

[DisplayName("EmailAddress")]
[Required(ErrorMessage = "Required")]
[StringLength(100, ErrorMessage = "Must be <= 100 characters.")]
public string EmailAddress { get; set; }

// and then in my view...
@Html.EditorFor(x => x.EmailAddress)

这不是:

[DisplayName("EmailAddress")]
[Required(ErrorMessage = "Required")]
[StringLength(100, ErrorMessage = "Must be <= 100 characters.")]
[EmailAddress(ErrorMessage="Invalid email address.")]
public string EmailAddress { get; set; }

// and then in my view...
@Html.EditorFor(x => x.EmailAddress)

在第二个示例中,使用默认字符串编辑器模板而不是我自己的模板。使用正确的编辑器模板渲染同一模型上的其他属性。

我错过了一些明显的东西,或者这看起来像个错误?

1 个答案:

答案 0 :(得分:3)

[EmailAddress]属性将属性的DataType设置为EmailAddress,这会导致EditorFor()查找EmailAddress模板。