ดังนั้นชื่อควรพูดเพื่อตัวเอง
ในการสร้างส่วนประกอบที่ใช้งานซ้ำได้ใน ASP.NET MVC เรามี 3 ตัวเลือก (อาจเป็นอย่างอื่นที่ฉันไม่ได้กล่าวถึง)
มุมมองบางส่วน:
@Html.Partial(Model.Foo, "SomePartial")
เทมเพลตแก้ไขที่กำหนดเอง:
@Html.EditorFor(model => model.Foo)
เทมเพลตการแสดงผลที่กำหนดเอง:
@Html.DisplayFor(model => model.Foo)
ในแง่ของการดู / HTML การใช้งานทั้งสามนั้นเหมือนกัน:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
ดังนั้นคำถามของฉันคือ - เมื่อใด / คุณตัดสินใจเลือกหนึ่งในสามที่จะใช้
สิ่งที่ฉันกำลังมองหาจริงๆคือรายการคำถามที่ถามตัวเองก่อนสร้างคำถามซึ่งสามารถใช้คำตอบเพื่อตัดสินใจว่าจะใช้เทมเพลตใด
นี่คือ 2 สิ่งที่ฉันค้นพบได้ดีขึ้นด้วย EditorFor / DisplayFor:
พวกเขาเคารพลำดับชั้นของแบบจำลองเมื่อเรนเดอร์ HTML helpers (เช่นถ้าคุณมีวัตถุ "Bar" ในโมเดล "Foo" ของคุณองค์ประกอบ HTML สำหรับ "Bar" จะแสดงผลด้วย "Foo.Bar.ElementName" ในขณะที่บางส่วนจะมี " ElementName ")
มีประสิทธิภาพมากขึ้นเช่นหากคุณมี
List<T>
สิ่งใดสิ่งหนึ่งใน ViewModel ของคุณคุณสามารถใช้งาน@Html.DisplayFor(model => model.CollectionOfFoo)
ได้และ MVC นั้นฉลาดพอที่จะเห็นว่าเป็นคอลเลกชันและแสดงหน้าจอเดียวสำหรับแต่ละรายการ (ตรงข้ามกับ Partial ซึ่งต้องมีความชัดเจน ห่วง)
ฉันเคยได้ยิน DisplayFor แสดงเทมเพลต "อ่านอย่างเดียว" แต่ฉันไม่เข้าใจ - ฉันไม่สามารถโยนแบบฟอร์มลงไปที่นั่นได้หรือไม่
มีใครบอกฉันด้วยเหตุผลอื่นได้ไหม มีรายการ / บทความที่เปรียบเทียบทั้งสามบ้างไหม?