Antworten:
Es erstellt eine versteckte Eingabe in das Formular für das Feld (aus Ihrem Modell), an das Sie es übergeben.
Es ist nützlich für Felder in Ihrem Model / ViewModel, die Sie auf der Seite beibehalten müssen und die bei einem weiteren Anruf zurückgegeben wurden, aber vom Benutzer nicht gesehen werden sollten.
Betrachten Sie die folgende ViewModel-Klasse:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
Jetzt soll die Bearbeitungsseite die ID speichern, aber nicht angezeigt werden:
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
Dies ergibt das Äquivalent des folgenden HTML:
<form name="form1">
<input type="hidden" name="Id">2</input>
<input type="text" name="Value" value="Some Text" />
</form>
Und um die verborgene ID-Eingabe wieder in Ihre Bearbeitungsaktionsmethode zu übernehmen:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
Wie viele Funktionen kann auch diese auf viele verschiedene Arten verwendet werden, um viele verschiedene Probleme zu lösen. Ich halte sie für ein weiteres Werkzeug in unseren Werkzeuggürteln.
Bisher konzentrierte sich die Diskussion stark darauf, eine ID einfach auszublenden, aber das ist nur ein Wert. Warum nicht für viele Werte verwenden? Das ist, was ich tue, ich benutze es, um die Werte in einer Klasse jeweils nur in einer Ansicht zu laden, da html.beginform ein neues Objekt erstellt und wenn Ihrem Modellobjekt für diese Ansicht bereits einige Werte übergeben wurden, diese Werte gehen verloren, es sei denn, Sie geben im Startformular einen Verweis auf diese Werte an.
Um eine gute Motivation für die Datei html.hiddenfor zu sehen, empfehle ich, dass Sie das Übergeben von Daten aus einer Ansicht an einen Controller in .NET MVC unter "@model" nicht hervorheben
Die Verwendung von Razor-Code @ Html.Hidden oder @ Html.HiddenFor ähnelt dem folgenden HTML-Code
<input type="hidden"/>
Und verweisen Sie auch auf den folgenden Link