2016-11-18 9 views
4

データアノテーションを尊重していません。今すぐHtml.EditorForは()私は、次のプロパティを持つモデル持って

[Required] 
[HiddenInput(DisplayValue = false)] 
public override int Id { get; set;} 

を、それは、HTMLヘルパーがプロパティをレンダリングするとき、アノテーション属性、これらのデータを尊重することになっているというのが私の理解があります。私は、次のHTMLが生成され

@Html.EditorFor(m => m.Id) 

を行うときしかし:

<input class="text-box single-line" id="Id" name="Id" type="number" value="2"> 

私はフィールドが隠されることを期待するが、そうではありません。

@Html.Editor("Id") 

これによって生成HTMLはそれがあるべきようにフィールドを非表示にするために設定します:

<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="2"> 

を私の知る限り、両方のヘルパーがいる伝えることができるように私は、アノテーションの属性を尊重しない他のヘルパーを発見しましたSystem.Web.Mvc.Htmlという名前空間から、両方の実装はSystem.Web.Mvcアセンブリバージョン5.2.3.0です。

@ Html.EditorFor()メソッドを使用したいと思いますが、データアノテーションも必要です。

すべてのアイデアを歓迎します。

+3

多分それは相続と関係がありますか?たぶんヘルパーは基本クラスレベルの属性しか探していないのでしょうか?ただの考え –

+0

@JakubJankowskiそれはそれでした!いくつかのメソッドが基本クラスを見ていて、他のメソッドはそうではありませんが、確かにそれを修正しました。ありがとう。 – Toodleey

+0

@Christosこれはあなたがタグ付けした投稿の複製です。 – Toodleey

答えて

2

コメントは@JakubJankowskiによって解決されました。 @ Html.EditorFor()は、オーバーライドされたプロパティのデータアノテーションを受け入れません。

+0

Wrong - 'EditorFor()'はオーバーライドされたプロパティのデータアノテーションを受け入れます。 '@Html.EditorFor(m => m.Id)'によって生成されたhtmlは ' 'あなたが私たちに示していないものがない限り(' ' –

関連する問題