2016-11-18 54 views
4

我有以下屬性的模型:Html.EditorFor()不接受數據註解

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

現在,它是我的理解是HTML傭工都應該遵守這些數據呈現屬性時,註釋屬性。然而,當我做

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

以下HTML製作:

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

我想到現場被隱藏,但事實並非如此。我已經發現了另一個幫手其中DOES兌現註釋屬性:

@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

錯誤 - EditorFor()將在重寫屬性上遵守數據註釋。 '@ H​​tml.EditorFor(m => m.Id)'生成的html不會生成'除非還有別的東西沒有顯示給我們(它會產生'' –