Html.Textbox VS Html.TextboxFor

Respuestas:

117

En última instancia, ambos producen el mismo HTML, pero Html.TextBoxFor () está fuertemente tipado, mientras que Html.TextBox no lo está.

1:  @Html.TextBox("Name")
2:  Html.TextBoxFor(m => m.Name)

ambos producirán

<input id="Name" name="Name" type="text" />

Entonces, ¿qué significa eso en términos de uso?

Generalmente dos cosas:

  1. El escrito TextBoxForgenerará sus nombres de entrada por usted. Por lo general, este es solo el nombre de la propiedad, pero para las propiedades de tipos complejos puede incluir un guión bajo como 'nombre_cliente'
  2. El uso de la TextBoxForversión escrita le permitirá usar la verificación del tiempo de compilación. Entonces, si cambia su modelo, puede verificar si hay algún error en sus vistas.

En general, se considera una mejor práctica utilizar las versiones fuertemente tipadas de HtmlHelpers que se agregaron en MVC2 .

David Glenn
fuente
7

En mi opinión, la principal diferencia es que Textbox no está fuertemente tipado. TextboxFor toma un lambda como parámetro que le dice al ayudante el elemento with del modelo para usar en una vista escrita.

Puede hacer lo mismo con ambos, pero debe usar vistas escritas y TextboxFor cuando sea posible.

Jonathan
fuente
3

Html.TextBox y Html.DropDownList no están fuertemente tipados y, por lo tanto, no requieren una vista fuertemente tipada. Esto significa que podemos codificar cualquier nombre que queramos. Por otro lado, Html.TextBoxFor y Html.DropDownListFor están fuertemente tipados y requieren una vista fuertemente tipada, y el nombre se infiere de la expresión lambda.

Los ayudantes HTML fuertemente tipados también proporcionan verificación del tiempo de compilación.

Dado que, en tiempo real, usamos principalmente vistas fuertemente tipadas, preferimos usar Html.TextBoxFor y Html.DropDownListFor sobre sus contrapartes.

Ya sea que usemos Html.TextBox & Html.DropDownList O Html.TextBoxFor & Html.DropDownListFor, el resultado final es el mismo, es decir, producen el mismo HTML.

Se añaden ayudantes HTML fuertemente tipados en MVC2.

Yogesh Yadav
fuente