web-dev-qa-db-ja.com

Html.Textbox VS Html.TextboxFor

Html.TextboxとHtml.TextboxForの違いは何ですか?

91
eyalb

最終的には両方とも同じHTMLを生成しますが、 Html.TextBoxFor() は、 Html.TextBox がそうではない場合に強く入力されます。

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

両方が生産します

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

それで、それは使用に関して何を意味するのでしょうか?

一般的に2つのこと:

  1. 入力したTextBoxForは、入力名を生成します。通常、これは単なるプロパティ名ですが、複合型のプロパティの場合は、「customer_name」などのアンダースコアを含めることができます
  2. 型付きTextBoxForバージョンを使用すると、コンパイル時チェックを使用できます。したがって、モデルを変更すると、ビューにエラーがあるかどうかを確認できます。

一般に、 MVC2で追加 であったHtmlHelpersの厳密に型指定されたバージョンを使用することをお勧めします。

113
David Glenn

TextBoxForは、MVC2で導入された新しいMVC入力拡張です。

新しい強く型付けされた拡張機能の主な利点は、実行時ではなくコンパイル時にエラー/警告を表示することです。

このページをご覧ください。

http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx

15
iain

IMOの主な違いは、Textboxが厳密に入力されていないことです。 TextboxForは、型付きビューで使用するモデルのwith要素をヘルパーに伝えるパラメーターとしてラムダを取ります。

両方で同じことを実行できますが、可能な場合は型付きビューとTextboxForを使用する必要があります。

6
Jonathan

Html.TextBox AMD Html.DropDownListは強く型付けされていないため、強く型付けされたビューを必要としません。これは、必要な名前をハードコードできることを意味します。一方、Html.TextBoxForとHtml.DropDownListForは強く型付けされており、強く型付けされたビューを必要とし、名前はラムダ式から推測されます。

厳密に型指定されたHTMLヘルパーは、コンパイル時のチェックも提供します。

リアルタイムでは、主に厳密に型指定されたビューを使用するため、対応するビューよりもHtml.TextBoxForおよびHtml.DropDownListForを使用することを好みます。

Html.TextBox&Html.DropDownList OR Html.TextBoxFor&Html.DropDownListForを使用するかどうかにかかわらず、最終結果は同じです。つまり、同じHTMLを生成します。

強く型付けされたHTMLヘルパーがMVC2に追加されました。

3
Yogesh Yadav