Html.Textbox VS Html.TextboxFor


คำตอบ:


119

ในที่สุดพวกเขาทั้งสองก็สร้าง 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เวอร์ชันที่พิมพ์จะช่วยให้คุณสามารถใช้การตรวจสอบเวลาคอมไพล์ ดังนั้นหากคุณเปลี่ยนโมเดลคุณสามารถตรวจสอบได้ว่ามีข้อผิดพลาดในมุมมองของคุณหรือไม่

มันได้รับการยกย่องโดยทั่วไปเป็นปฏิบัติดีกว่าที่จะใช้รุ่นพิมพ์มั่นของ HtmlHelpers ที่ถูกเพิ่มเข้ามาใน MVC2


16

TextBoxForเป็นส่วนขยายใหม่ป้อนข้อมูล MVC แนะนำใน MVC2

ประโยชน์หลักของส่วนขยายที่พิมพ์ใหม่กว่าคือการแสดงข้อผิดพลาด / คำเตือนในเวลาคอมไพล์แทนที่จะเป็นรันไทม์

ดูหน้านี้

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


7

IMO ข้อแตกต่างหลักคือ Textbox ไม่ได้ถูกพิมพ์อย่างรุนแรง กล่องข้อความสำหรับใช้แลมบ์ดาเป็นพารามิเตอร์ที่บอกให้ผู้ช่วยที่มีองค์ประกอบของโมเดลใช้ในมุมมองที่พิมพ์

คุณสามารถทำสิ่งเดียวกันกับทั้งสองอย่างได้ แต่คุณควรใช้มุมมองที่พิมพ์และ TextboxFor เมื่อทำได้


3

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.