Html.Textbox VS Html.TextboxFor

Respostas:

117

Em última análise, ambos produzem o mesmo HTML, mas Html.TextBoxFor () é fortemente tipado, enquanto Html.TextBox não é.

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

ambos produzirão

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

Então, o que isso significa em termos de uso?

Geralmente duas coisas:

  1. O digitado TextBoxForirá gerar seus nomes de entrada para você. Geralmente é apenas o nome da propriedade, mas para propriedades de tipos complexos pode incluir um sublinhado, como 'nome_do_cliente'
  2. Usar a TextBoxForversão digitada permitirá que você use a verificação de tempo de compilação. Portanto, se você alterar seu modelo, poderá verificar se há algum erro em suas visualizações.

É geralmente considerado como prática melhor usar as versões fortemente tipadas dos HtmlHelpers que foram adicionadas no MVC2 .

David Glenn
fonte
7

IMO, a principal diferença é que a caixa de texto não é fortemente tipada. TextboxFor pega um lambda como parâmetro que informa ao auxiliar o elemento with do modelo para usar em uma visualização digitada.

Você pode fazer as mesmas coisas com ambos, mas deve usar visualizações digitadas e TextboxFor quando possível.

Jonathan
fonte
3

Html.TextBox amd Html.DropDownList não são fortemente tipados e, portanto, não requerem uma visualização fortemente tipada. Isso significa que podemos codificar qualquer nome que quisermos. Por outro lado, Html.TextBoxFor e Html.DropDownListFor são fortemente tipados e requerem uma visão fortemente tipada, e o nome é inferido da expressão lambda.

Auxiliares HTML fortemente tipados também fornecem verificação de tempo de compilação.

Visto que, em tempo real, usamos principalmente visualizações fortemente tipadas, preferimos usar Html.TextBoxFor e Html.DropDownListFor em vez de suas contrapartes.

Se usarmos Html.TextBox & Html.DropDownList OU Html.TextBoxFor & Html.DropDownListFor, o resultado final é o mesmo, ou seja, eles produzem o mesmo HTML.

Auxiliares HTML fortemente tipados são adicionados ao MVC2.

Yogesh Yadav
fonte