Verstecktes Asp.Net Mvc-Feld aus Datenanmerkungen

73

Ich dachte, dies wäre eine schnelle Suche bei Google, aber vielleicht fehlt mir etwas. Gibt es eine Möglichkeit, mithilfe von Datenanmerkungen eine ViewModel-Eigenschaft festzulegen, um beim Rendern des Markups einen HiddenInput zu erstellen?

Die einzigen Anmerkungen, die ich gefunden habe, waren, die Eigenschaft vollständig aus der Ansicht auszublenden. Ich möchte weiterhin, dass die Eigenschaft gerendert wird, aber als versteckte Eingabe.

Justin Soliz
quelle

Antworten:

133

Dieses Anwesen:

[System.Web.Mvc.HiddenInput(DisplayValue = false)]
public int Id { get; set; }

wird gerendert als dh

<input id="Id" name="Id" type="hidden" value="21" />

bei der Verwendung von Html.EditorForModel()oder Html.EditorFor(m => m.Id)

Miensol
quelle
7
Qualifizieren Sie sich vollständig mit System.Web.Mvc.HiddenInput oder fügen Sie den Namespace hinzu.
Jason
Danke, es hat gut funktioniert, außer Id-Eigenschaft. Ich wusste nicht warum, natürlich gab es in meinem Code kein Validierungsattribut für die Id-Eigenschaft.
Tien Do
2
Gibt es einen Grund, warum man den HTML-Helfer nicht @Html.hiddenfor(_ => _.FOO) in der Ansicht verwenden würde?
3
@gerdi Möglicherweise möchten Sie die Ansichten (die .cshtml) in Ruhe lassen und die Ausgabe nur über die Modellattribute steuern. Oder Sie möchten möglicherweise @ Html.EditorForModel () verwenden. In diesem Fall schreiben Sie keinen Razor-Code und benötigen daher das Attribut.
VictorySaber