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.

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)


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.