Que fait Html.HiddenFor?

Bien que j’aie lu la documentation sur Html.HiddenFor, je n’ai pas compris à quoi ça sert …

Quelqu’un pourrait-il expliquer ses utilisations et donner un court exemple?

Où ces assistants doivent-ils figurer dans le code?

Il crée une entrée masquée sur le formulaire pour le champ (à partir de votre modèle) que vous transmettez.

Il est utile pour les champs de votre modèle / ViewModel que vous devez persister sur la page et que vous avez repassés lorsqu’un autre appel est effectué, mais que l’utilisateur ne doit pas les voir.

Considérez la classe ViewModel suivante:

public class ViewModel { public ssortingng Value { get; set; } public int Id { get; set; } } 

Maintenant, vous voulez que la page d’édition stocke l’ID mais ne l’a pas vu:

 < % using(Html.BeginForm() { %> < %= Html.HiddenFor(model.Id) %>
< %= Html.TextBoxFor(model.Value) %> < % } %>

Cela se traduit par l’équivalent du code HTML suivant:

 
2

Et pour reprendre la saisie de l’ID caché sur votre méthode d’action Edit:

 [HttpPost] public ActionResult Edit(FormCollection collection) { ViewModel.ID = Convert.ToInt32(collection["ID"]); } 

Comme beaucoup de fonctions, celle-ci peut être utilisée de nombreuses manières différentes pour résoudre de nombreux problèmes différents.

Jusqu’à présent, la discussion a essentiellement porté sur la dissimulation d’un identifiant, mais ce n’est qu’une valeur, pourquoi ne pas l’utiliser pour beaucoup de valeurs! C’est ce que je suis en train de faire, je l’utilise pour charger les valeurs d’une classe dans une seule vue à la fois, car html.beginform crée un nouvel object et si certaines valeurs de votre object de modèle lui ont déjà été transmises, celles-ci les valeurs seront perdues sauf si vous fournissez une référence à ces valeurs dans le formulaire de début.

Pour voir une grande motivation pour le fichier 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

   

Et référez-vous également au lien suivant

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.hiddenfor(v=vs.118).aspx