我有一個查看模型,它由一個Applicant
對象和一個TeamMember
集合組成。當我發回模型時,Team集合始終爲空。我試過將原來的IEnumarable
改爲List
,但這並沒有什麼區別。因此,我將控制器編輯動作更改爲接受FormCollection
,並驗證viewModel["member.FirstName"]
中有數據。我迷失了爲什麼綁定不起作用。我試圖儘可能清理我的代碼示例,但我對我錯過的東西感到困惑。任何幫助是極大的讚賞!在MVC中綁定集合
查看模型屬性
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="#">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="#">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>
<% } %>
我很確定,當我實現我的模板時,我不需要擔心強制索引顯示等。我相信,當你在列表上使用EditorFor,並且你有一個單獨項目的編輯器模板它構成了列表,它會自動迭代並處理綁定等。 – 2011-02-10 01:54:26