สมมติว่าฉันมี ViewModel เช่น
public class AnotherViewModel
{
public string Name { get; set; }
}
public class MyViewModel
{
public string Name { get; set; }
public AnotherViewModel Child { get; set; }
public AnotherViewModel Child2 { get; set; }
}
ในมุมมองฉันสามารถแสดงผลบางส่วนด้วย
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
ในบางส่วนฉันจะทำ
<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>
อย่างไรก็ตามปัญหาคือทั้งสองจะแสดง name = "Name" ในขณะที่ฉันต้องมี name = "Child.Name" เพื่อให้ตัวยึดแบบจำลองทำงานได้อย่างถูกต้อง หรือ name = "Child2.Name" เมื่อฉันแสดงผลคุณสมบัติที่สองโดยใช้มุมมองบางส่วนเดียวกัน
ฉันจะทำให้มุมมองบางส่วนของฉันรู้จักคำนำหน้าที่ต้องการโดยอัตโนมัติได้อย่างไร ฉันสามารถส่งเป็นพารามิเตอร์ได้ แต่มันไม่สะดวกเกินไป นี่ยิ่งแย่ไปกว่านั้นเมื่อฉันต้องการแสดงผลซ้ำ ๆ มีวิธีการแสดงผลมุมมองบางส่วนด้วยคำนำหน้าหรือดีกว่าด้วยการสร้างนิพจน์แลมบ์ดาการเรียกใหม่โดยอัตโนมัติเพื่อให้
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
จะเพิ่ม "เด็ก" ที่ถูกต้องโดยอัตโนมัติ คำนำหน้าของสตริงชื่อ / id ที่สร้างขึ้น?
ฉันสามารถยอมรับวิธีแก้ปัญหาใด ๆ รวมถึงเอนจิ้นและไลบรารีมุมมองบุคคลที่สาม - ฉันใช้ Spark View Engine (ฉัน "แก้ปัญหา" โดยใช้มาโคร) และ MvcContrib แต่ไม่พบวิธีแก้ไขที่นั่น XForms, InputBuilder, MVC v2 - เครื่องมือ / ข้อมูลเชิงลึกใด ๆ ที่ให้ฟังก์ชันนี้จะดีมาก
ตอนนี้ฉันคิดเกี่ยวกับการเขียนโค้ดด้วยตัวเอง แต่ดูเหมือนจะเสียเวลาฉันไม่อยากเชื่อเลยว่าสิ่งเล็กน้อยนี้ยังไม่ได้นำมาใช้
อาจมีวิธีแก้ปัญหาด้วยตนเองจำนวนมากและยินดีต้อนรับทุกคน ตัวอย่างเช่นฉันสามารถบังคับให้บางส่วนของฉันอิงจาก IPartialViewModel <T> {คำนำหน้าสตริงสาธารณะ; T รุ่น; } แต่ฉันต้องการโซลูชันที่มีอยู่ / ได้รับการอนุมัติมากกว่า
helper.ViewData.TemplateInfo.HtmlFieldPrefix
ในรูปแบบของ{oldprefix}.{newprefix}