如果我有这样的模型:
public class Search
{
public int Id { get; set; }
public string UserDefinedName { get; set; }
public SearchAge Age { get; set; }
public virtual ICollection<SearchBachelors> Bachelors { get; set; }
}
我使用以下内容动态渲染Age属性的局部视图:
@Ajax.ActionLink("Age", "SearchAge", new AjaxOptions { UpdateTargetId = "search-stage", InsertionMode = InsertionMode.InsertAfter })
该部分视图如下所示:
@model HireWireWeb.Models.Campaign.Search.Search
<div>
@Html.DropDownListFor(m => m.Age.MaximumAge, HireWireWeb.Models.Constants.SLIST_AGE_LIST)
@Html.DropDownListFor(m => m.Age.MinimumAge, HireWireWeb.Models.Constants.SLIST_AGE_LIST)
</div>
(请注意,我没有在此处传递“SearchAge”作为模型,而是它的父级“搜索”,因为它只是如何在呈现的“搜索”下在表单提交上发布“SearchAge”值表格) - According to this Answer
我的问题是,我如何使用“Bachelors”属性的部分视图执行相同的操作,因为它是ICollection?
答案 0 :(得分:1)
MVC的标准模型绑定系统需要能够创建被“绑定”的类型。它无法创建界面,因此解决此问题的最简单方法是将类型更改为List<SearchBachelors>
。然后你可以看到像这样的部分视图:
@model HireWireWeb.Models.Campaign.Search.Search
<div>
@for(var i = 0;i<Model.Bachelors.Count;++i)
{
@Html.TextBoxFor(m => m.Bachelors[i].Name)
}
</div>
...渲染输出的命名方式是在提交表单时使用列表中元素的索引绑定到List
属性。