2016-11-18 2 views
4

ich ein Modell mit folgenden Eigenschaft habe:Html.EditorFor() keine Daten Anmerkungen ehrt

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

, es ist mein Verständnis, dass die HTML-Helfer sollen diese Daten Anmerkung Attribute ehren, wenn Eigenschaften Rendering . Allerdings, wenn ich

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

die folgende html tun produziert:

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

Ich erwarte, dass das Feld versteckt werden, aber es ist nicht. Ich habe einen anderen Helfer gefunden, die die Anmerkung Attribute nicht einlöst:

@Html.Editor("Id") 

Die html durch diese erzeugt setzt das Feld versteckt, wie es sein sollte:

<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"> 

Soweit ich sagen kann, beide Helfer Aus dem Namespace System.Web.Mvc.Html stammen beide Implementierungen von der System.Web.Mvc-Assembly, Version 5.2.3.0.

Ich möchte die @ Html.EditorFor() Methode verwenden, aber ich brauche auch die Daten Anmerkungen.

Alle Ideen willkommen

+3

Vielleicht hat es etwas mit Vererbung zu tun? Vielleicht sucht der Helfer nur nach Attributen auf Basisklassenebene? Nur ein Gedanke –

+0

@JakubJankowski Das war es! Seltsam, dass einige der Methoden auf die Basisklasse schauen und andere nicht, aber sie haben es bestimmt behoben. Vielen Dank. – Toodleey

+0

@Christos in welcher Welt ist das ein Duplikat des Posts, den du markiert hast? – Toodleey

Antwort

2

Gelöst von @JakubJankowski in einem Kommentar. @ Html.EditorFor() berücksichtigt keine Datenannotationen in überschriebenen Eigenschaften.

+0

Falsch - Die 'EditorFor()' berücksichtigt Datenannotationen in überschriebenen Eigenschaften. Der von '@ Html.EditorFor (m => m.Id)' erzeugte HTML-Code generiert nicht ' 'es sei denn, es gibt etwas anderes, das Sie uns nicht gezeigt haben (es erzeugt' ' –

Verwandte Themen