2

モデルオブジェクトに。という文字列プロパティがありますEmailAddressHtml.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)

2番目の例では、自分のテンプレートの代わりにデフォルトの文字列エディターテンプレートが使用されています。同じモデルの他のプロパティは、正しいエディターテンプレートを使用してレンダリングされます。

私は明らかな何かを見逃していますか、それともこれはバグのように見えますか?

4

1 に答える 1

3

この[EmailAddress]属性は、プロパティのDataTypeをに設定しますEmailAddress。これにより、テンプレートEditorFor()が検索されます。EmailAddress

于 2013-03-12T14:40:35.880 に答える