ความแตกต่างระหว่าง Html.Textbox และ 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" />
แล้วนั่นหมายความว่าอย่างไรในแง่การใช้งาน?
โดยทั่วไปมีสองสิ่ง:
TextBoxFor
จะสร้างชื่อที่คุณป้อนให้คุณ โดยปกติจะเป็นเพียงชื่อคุณสมบัติ แต่สำหรับคุณสมบัติของประเภทที่ซับซ้อนสามารถใส่ขีดล่างเช่น 'customer_name'TextBoxFor
เวอร์ชันที่พิมพ์จะช่วยให้คุณสามารถใช้การตรวจสอบเวลาคอมไพล์ ดังนั้นหากคุณเปลี่ยนโมเดลคุณสามารถตรวจสอบได้ว่ามีข้อผิดพลาดในมุมมองของคุณหรือไม่มันได้รับการยกย่องโดยทั่วไปเป็นปฏิบัติดีกว่าที่จะใช้รุ่นพิมพ์มั่นของ HtmlHelpers ที่ถูกเพิ่มเข้ามาใน MVC2
TextBoxFor
เป็นส่วนขยายใหม่ป้อนข้อมูล MVC แนะนำใน MVC2
ประโยชน์หลักของส่วนขยายที่พิมพ์ใหม่กว่าคือการแสดงข้อผิดพลาด / คำเตือนในเวลาคอมไพล์แทนที่จะเป็นรันไทม์
ดูหน้านี้
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx
IMO ข้อแตกต่างหลักคือ Textbox ไม่ได้ถูกพิมพ์อย่างรุนแรง กล่องข้อความสำหรับใช้แลมบ์ดาเป็นพารามิเตอร์ที่บอกให้ผู้ช่วยที่มีองค์ประกอบของโมเดลใช้ในมุมมองที่พิมพ์
คุณสามารถทำสิ่งเดียวกันกับทั้งสองอย่างได้ แต่คุณควรใช้มุมมองที่พิมพ์และ 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