Jaka jest różnica między Html.Textbox i Html.TextboxFor?
asp.net-mvc
asp.net-mvc-3
razor
eyalb
źródło
źródło
Odpowiedzi:
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:
TextBoxFor
wygeneruje 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”TextBoxFor
wersji 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 .
źródło
TextBoxFor
Jest nowsza rozszerzenie wejście MVC wprowadzony w MVC2.Główną zaletą nowszych rozszerzeń o silnym typie jest wyświetlanie błędów / ostrzeżeń w czasie kompilacji, a nie w czasie wykonywania.
Zobacz tę stronę.
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx
źródło
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.
źródło
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.
źródło