Html.Textbox VS Html.TextboxFor

Réponses:

117

En fin de compte, ils produisent tous les deux le même HTML, mais Html.TextBoxFor () est fortement typé là où Html.TextBox ne l'est pas.

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

produiront tous les deux

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

Alors qu'est-ce que cela signifie en termes d'utilisation?

Généralement deux choses:

  1. Le tapé TextBoxForgénérera vos noms d'entrée pour vous. Il ne s'agit généralement que du nom de la propriété, mais pour les propriétés de types complexes, il peut inclure un trait de soulignement tel que 'nom_client'
  2. L'utilisation de la TextBoxForversion typée vous permettra d'utiliser la vérification au moment de la compilation. Donc, si vous modifiez votre modèle, vous pouvez vérifier s'il y a des erreurs dans vos vues.

Il est généralement considéré comme une meilleure pratique d'utiliser les versions fortement typées des HtmlHelpers qui ont été ajoutées dans MVC2 .

David Glenn
la source
7

IMO la principale différence est que Textbox n'est pas fortement typé. TextboxFor prend un lambda comme paramètre qui indique à l'assistant l'élément with du modèle à utiliser dans une vue typée.

Vous pouvez faire la même chose avec les deux, mais vous devez utiliser des vues typées et TextboxFor lorsque cela est possible.

Jonathan
la source
3

Html.TextBox et Html.DropDownList ne sont pas fortement typés et ne nécessitent donc pas une vue fortement typée. Cela signifie que nous pouvons coder en dur le nom que nous voulons. En revanche, Html.TextBoxFor et Html.DropDownListFor sont fortement typés et nécessitent une vue fortement typée, et le nom est déduit de l'expression lambda.

Les helpers HTML fortement typés fournissent également une vérification du temps de compilation.

Puisque, en temps réel, nous utilisons principalement des vues fortement typées, nous préférons utiliser Html.TextBoxFor et Html.DropDownListFor plutôt que leurs homologues.

Que nous utilisions Html.TextBox & Html.DropDownList OU Html.TextBoxFor & Html.DropDownListFor, le résultat final est le même, c'est-à-dire qu'ils produisent le même HTML.

Des helpers HTML fortement typés sont ajoutés dans MVC2.

Yogesh Yadav
la source