2

我的模型对象上有一个名为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)

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

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

4

1 回答 1

3

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

于 2013-03-12T14:40:35.880 回答