What is the difference between Html.TextBox and Html.TextBoxFor? As far as I know they produce same html output. Unless I'm missing something here. Please help me with this.
-
See also http://stackoverflow.com/questions/5908523/html-textbox-vs-html-textboxfor – RickAndMSFT Apr 12 '16 at 22:50
2 Answers
Html.TextBox
is not strongly typed and it doesn't require a strongly typed view meaning that you can hardcode whatever name you want as first argument and provide it a value:
<%= Html.TextBox("foo", "some value") %>
You can set some value in the ViewData
dictionary inside the controller action and the helper will use this value when rendering the textbox (ViewData["foo"] = "bar"
).
Html.TextBoxFor
is requires a strongly typed view and uses the view model:
<%= Html.TextBoxFor(x => x.Foo) %>
The helper will use the lambda expression to infer the name and the value of the view model passed to the view.
And because it is a good practice to use strongly typed views and view models you should always use the Html.TextBoxFor
helper.

- 1,023,142
- 271
- 3,287
- 2,928
-
1
-
1@gmail user, yes the end result is the same. They both emit the same html. – Darin Dimitrov Feb 25 '11 at 16:04
Strongly typed extensions is to show any errors or warnings at compile time rather than run time. Please see this page, it will clarify all your doubts

- 2,907
- 4
- 30
- 39