我的模型对象上有一个名为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)
在第二个示例中,使用默认字符串编辑器模板而不是我自己的模板。使用正确的编辑器模板渲染同一模型上的其他属性。
我错过了一些明显的东西,或者这看起来像个错误?
答案 0 :(得分:3)
[EmailAddress]
属性将属性的DataType设置为EmailAddress
,这会导致EditorFor()
查找EmailAddress
模板。