Html.Textbox VS Html.TextboxFor

Odpowiedzi:

118

Ostatecznie oba generują ten sam kod HTML, ale Html.TextBoxFor () jest silnie wpisany, podczas gdy Html.TextBox nie jest.

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

będą produkować

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

Więc co to oznacza pod względem użytkowania?

Ogólnie dwie rzeczy:

  1. Wpisany TextBoxForwygeneruje dla Ciebie nazwy wejściowe. Zwykle jest to tylko nazwa właściwości, ale w przypadku właściwości typów złożonych może zawierać podkreślenie, takie jak „nazwa_klienta”
  2. Użycie TextBoxForwersji wpisanej pozwoli Ci na sprawdzanie czasu kompilacji. Jeśli więc zmienisz model, możesz sprawdzić, czy w widokach nie ma błędów.

Ogólnie uważa się, że lepszą praktyką jest używanie silnie wpisanych wersji HtmlHelpers, które zostały dodane w MVC2 .

David Glenn
źródło
7

IMO główna różnica polega na tym, że pole tekstowe nie jest silnie wpisane. TextboxFor weź lambdę jako parametr, który informuje pomocnika with element modelu, który ma zostać użyty w widoku typizowanym.

Możesz zrobić to samo z obydwoma, ale powinieneś używać widoków maszynowych i TextboxFor, gdy to możliwe.

Jonathan
źródło
3

Html.TextBox amd Html.DropDownList nie są silnie wpisane i dlatego nie wymagają silnie wpisanego widoku. Oznacza to, że możemy zakodować na stałe dowolną nazwę. Z drugiej strony Html.TextBoxFor i Html.DropDownListFor są silnie wpisane i wymagają silnie wpisanego widoku, a nazwa jest wywnioskowana z wyrażenia lambda.

Pomocnicy HTML o silnym typie zapewniają również sprawdzanie czasu kompilacji.

Ponieważ w czasie rzeczywistym używamy głównie widoków silnie typizowanych, wolimy używać Html.TextBoxFor i Html.DropDownListFor zamiast ich odpowiedników.

Niezależnie od tego, czy używamy Html.TextBox & Html.DropDownList LUB Html.TextBoxFor & Html.DropDownListFor efekt końcowy jest taki sam, to znaczy produkują ten sam HTML.

W MVC2 są dodawane pomocniki HTML o silnym typie.

Yogesh Yadav
źródło