Réponses:
Il crée une entrée masquée sur le formulaire pour le champ (de votre modèle) que vous lui transmettez.
Il est utile pour les champs de votre Model / ViewModel dont vous avez besoin pour persister sur la page et que vous avez repassés lorsqu'un autre appel est effectué mais que l'utilisateur ne doit pas voir.
Considérez la classe ViewModel suivante:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
Vous voulez maintenant que la page d'édition stocke l'ID, mais ne l'avez pas vu:
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
Cela donne l'équivalent du code HTML suivant:
<form name="form1">
<input type="hidden" name="Id">2</input>
<input type="text" name="Value" value="Some Text" />
</form>
Et pour consommer l'entrée d'ID masqué dans votre méthode d'action Modifier:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
Comme beaucoup de fonctions, celle-ci peut être utilisée de différentes manières pour résoudre de nombreux problèmes différents, je pense que c'est un autre outil de nos ceintures d'outils.
Jusqu'à présent, la discussion s'est fortement concentrée sur le simple fait de cacher un identifiant, mais ce n'est qu'une valeur, pourquoi ne pas l'utiliser pour de nombreuses valeurs! C'est ce que je fais, je l'utilise pour charger les valeurs d'une classe une seule vue à la fois, car html.beginform crée un nouvel objet et si votre objet modèle pour cette vue avait déjà des valeurs qui lui ont été transmises, celles-ci les valeurs seront perdues à moins que vous ne fournissiez une référence à ces valeurs dans le formulaire de début.
Pour voir une grande motivation pour le html.hiddenfor, je vous recommande de voir Passer des données d'une vue à un contrôleur dans .NET MVC - "@model" ne mettant pas en évidence
L'utilisation du code Razor @ Html.Hidden ou @ Html.HiddenFor est similaire au code Html suivant
<input type="hidden"/>
Et référez-vous également au lien suivant