ฉันมี View Model ที่ประกอบด้วยวัตถุ Applicant
และคอลเลกชัน TeamMember
เมื่อฉันโพสต์โมเดลกลับ คอลเลกชันทีมจะเป็นโมฆะเสมอ ฉันได้ลองเปลี่ยนคอลเลกชันจาก IEnumarable
ดั้งเดิมของฉันเป็น List
แต่นั่นก็ไม่ได้สร้างความแตกต่าง ดังนั้นฉันจึงเปลี่ยนการดำเนินการแก้ไขตัวควบคุมเพื่อยอมรับ FormCollection
และตรวจสอบว่ามีข้อมูลใน viewModel["member.FirstName"]
ฉันสับสนว่าทำไมการผูกข้อมูลไม่ทำงาน ฉันพยายามล้างตัวอย่างโค้ดให้มากที่สุดเท่าที่จะเป็นไปได้ แต่ฉันสับสนกับสิ่งที่ฉันขาดหายไป ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก!
ดูคุณสมบัติของโมเดล
public class MyViewModel
{
public Applicant ApplicantInfo { get; set; }
public List<TeamMember> TeamMembers { get; set; }
}
ตัวควบคุม
[HttpPost]
public ActionResult Edit(MyViewModel viewModel)
{
// viewModel.ApplicantInfo has the form data
// viewModel.TeamMembers = null
}
ดู
<% using (Html.BeginForm())
{%>
<h3>
<a href="/th#">Applicant Information</a>
</h3>
<label>
City
<%: Html.TextBoxFor(m => Model.ApplicantInfo.City)%>
</label>
<label>
State
<%: Html.TextBoxFor(m => Model.ApplicantInfo.State)%>
</label>
<h3>
<a href="/th#">Team</a>
</h3>
<div>
<% foreach (var member in Model.TeamMembers)
{ %>
<div class="editor-field">
<%: Html.DropDownList("member.Type", Model.GetMemberTypes(member.MemberType.TypeId))%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => member.FirstName)%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => member.LastName)%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => member.Title)%>
</div>
<%} %>
</div>
<p>
<input type="submit" value="Save" />
</p>
<% } %>