Solución:
La mayoría de los métodos auxiliares de MVC tienen una variante XXXFor. Están pensados para usarse junto con una clase de modelo concreta. La idea es permitir que el ayudante derive el atributo de “nombre” apropiado para el control de entrada de formulario en función de la propiedad que especifique en la lambda. Esto significa que puede eliminar las “cadenas mágicas” que de otro modo tendría que emplear para correlacionar las propiedades del modelo con sus vistas. Por ejemplo:
Html.Hidden("Name", "Value")
Resultará en:
<input id="Name" name="Name" type="hidden" value="Value">
En su controlador, es posible que tenga una acción como:
[HttpPost]
public ActionResult MyAction(MyModel model)
{
}
Y un modelo como:
public class MyModel
{
public string Name { get; set; }
}
La herida Html.Hidden
que usamos anteriormente se correlacionará con el Name
propiedad en el modelo. Sin embargo, es algo desagradable que el valor “Nombre” de la propiedad deba especificarse mediante una cadena (“Nombre”). Si cambia el nombre del Name
propiedad en el modelo, su código se romperá y el error será algo difícil de descifrar. Por otro lado, si usa HiddenFor
, te proteges de eso:
Html.HiddenFor(x => x.Name, "Value");
Ahora, si cambia el nombre del Name
propiedad, obtendrá un error de tiempo de ejecución explícito que indica que no se puede encontrar la propiedad. Además, obtiene otros beneficios del análisis estático, como obtener un menú desplegable de los miembros después de escribir x.
.
Html.Hidden crea una entrada oculta, pero debe especificar el nombre y todos los atributos que desea darle a ese campo y valor. los Html.HiddenFor
crea una entrada oculta para el objeto que le pasa, se ven así:
Html.Hidden("yourProperty",model.yourProperty);
Html.HiddenFor(m => m.yourProperty)
¡En este caso la salida es la misma!
Cada método en HtmlHelper la clase tiene un gemelo con For
sufijo.
Html.Hidden toma una cadena como argumento que debe proporcionar pero Html.HiddenFor toma un Expresión que si miras es un vista fuertemente tipada puede beneficiarse de esto y alimentar ese método expresión lambda como esto
o=>o.SomeProperty
en lugar de “SomeProperty” en el caso de utilizar Html.Hidden método.