¿Qué hace Html.HiddenFor?

Aunque he leído la documentación en Html.HiddenFor, no he entendido para qué se usa …

¿Podría alguien explicar sus usos y dar un pequeño ejemplo?

¿Dónde deberían ir esos ayudantes en el código?

Crea una entrada oculta en el formulario para el campo (de su modelo) que lo pasa.

Es útil para los campos de su Model / ViewModel que necesita persistir en la página y ha pasado de nuevo cuando se realiza otra llamada, pero el usuario no debe verla.

Considere la siguiente clase de ViewModel:

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

Ahora quiere que la página de edición almacene la ID pero no la vea:

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

Esto da como resultado el equivalente del siguiente HTML:

 
2

Y para consumir la entrada de ID oculta en su método de acción de edición:

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

Al igual que muchas funciones, esta puede usarse de muchas maneras diferentes para resolver muchos problemas diferentes, la considero una herramienta más en nuestros toolbelts.

Hasta ahora, la discusión se ha centrado principalmente en simplemente ocultar una identificación, pero ese es solo un valor, ¿por qué no usarlo para muchos valores? Eso es lo que estoy haciendo, lo uso para cargar los valores en una clase solo una vista a la vez, porque html.beginform crea un nuevo objeto y si su objeto de modelo para esa vista ya tenía algunos valores pasados, aquellos los valores se perderán a menos que proporcione una referencia a esos valores en el beginform.

Para ver una gran motivación para html.hiddenfor, te recomiendo que veas Pasar datos desde una Vista a un Controlador en .NET MVC – “@model” sin resaltar

El uso del código Razor @ Html.Hidden o @ Html.HiddenFor es similar al siguiente código Html

   

Y también consulte el siguiente enlace

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