[asp.net-mvc] Html.Textbox VS Html.TextboxFor

Html.Textbox와 Html.TextboxFor의 차이점은 무엇입니까?



답변

궁극적으로 그들은 모두 같은 HTML하지만 생산 () Html.TextBoxFor을 강하게 곳에 입력 된 Html.TextBox가 없습니다.

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

둘 다 생산할 것이다

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

그렇다면 사용 측면에서 무엇을 의미합니까?

일반적으로 두 가지 :

  1. 입력 TextBoxFor하면 입력 이름이 생성됩니다. 일반적으로 속성 이름이지만 복잡한 유형의 속성에는 ‘customer_name’과 같은 밑줄이 포함될 수 있습니다.
  2. 형식화 된 TextBoxFor버전을 사용하면 컴파일 시간 검사를 사용할 수 있습니다. 따라서 모델을 변경하면 뷰에 오류가 있는지 확인할 수 있습니다.

일반적으로 MVC2추가 된 강력한 형식의 HtmlHelpers 버전을 사용하는 것이 더 나은 방법으로 간주됩니다 .


답변

TextBoxForMVC2에 도입 된 새로운 MVC 입력 확장이다.

강력하게 형식화 된 최신 확장의 주요 이점은 런타임이 아닌 컴파일 타임에 오류 / 경고를 표시하는 것입니다.

이 페이지를 참조하십시오.

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


답변

IMO의 주요 차이점은 Textbox가 강력한 유형이 아니라는 것입니다. TextboxFor는 형식화 된 뷰에서 사용할 모델의 with 요소를 도우미에게 알려주는 람다를 매개 변수로 사용합니다.

두 가지 모두에 대해 동일한 작업을 수행 할 수 있지만 가능하면 형식화 된 뷰와 TextboxFor를 사용해야합니다.


답변

Html.TextBox amd Html.DropDownList는 강력한 형식이 아니므로 강력한 형식의 뷰가 필요하지 않습니다. 이것은 우리가 원하는 이름을 하드 코딩 할 수 있음을 의미합니다. 반면에 Html.TextBoxFor 및 Html.DropDownListFor는 강력한 형식이며 강력한 형식의 뷰가 필요하며 이름은 람다 식에서 유추됩니다.

강력한 형식의 HTML 도우미는 컴파일 시간 검사도 제공합니다.

실시간으로 우리는 대부분 강력한 형식의 뷰를 사용하므로 Html.TextBoxFor 및 Html.DropDownListFor를 해당 뷰보다 선호합니다.

Html.TextBox & Html.DropDownList 또는 Html.TextBoxFor & Html.DropDownListFor를 사용하든 최종 결과는 동일합니다. 즉, 동일한 HTML을 생성합니다.

강력한 형식의 HTML 도우미가 MVC2에 추가되었습니다.


답변