Templates ASP.NET MVC 2:如何为集合中的每个项目调用DisplayFor?
我的模型中有一个集合类型(列表)的属性。我想调用此集合中的每个项目Templates ASP.NET MVC 2:如何为集合中的每个项目调用DisplayFor?,templates,asp.net-mvc-2,Templates,Asp.net Mvc 2,我的模型中有一个集合类型(列表)的属性。我想调用此集合中的每个项目Html.DisplayFor或Html.EditorFor。我该怎么做 编辑它不是强类型视图。这是一个模板视图。在您的视图中只有ViewData.ModelMetadata.类似的内容 <% foreach (var item in Model.MyCollection) { %> <%= html.EditorFor... %> ... <% } %> ... 另请参见
Html.DisplayFor
或Html.EditorFor
。我该怎么做
编辑它不是强类型视图。这是一个模板视图。在您的视图中只有ViewData.ModelMetadata.类似的内容
<% foreach (var item in Model.MyCollection) { %>
<%= html.EditorFor... %>
...
<% } %>
...
另请参见最简单的方法是向模型中添加“SelectedItem”属性:
public class YourModel
{
public IEnumberable<Item> YourCollection
{
get;
}
public Item SelctedItem
{
get;
set;
}
}
公共类模型
{
公共IEnumberable集合
{
得到;
}
公共项目选择项
{
得到;
设置
}
}
然后只需将列表中的每个项目分配给selctedItem属性:
<% foreach (var item in Model.YourCollection) { %>
Model.SelctedItem = item;
<%= html.EditorFor(SelctedItem) %>
...
<% } %>
Model.SelctedItem=项目;
...
你能试试吗
<% foreach (var item in Model.MyCollection) { %>
<%= html.EditorFor(m=>item) %>
<% } %>
项目)%>
可能重复,但如何在庙宇视图中执行此操作。没有Model.items。只是ViewData.ModelMetadata..如果您的集合在ViewData项中,则类似于foreach(在(IEnumerable)ViewData[“MyCollection”]中的MyItemType项)
yes,但MyItemType可以是任何东西。。因此,我正在尝试创建模板。。类似于这里,但我不明白表达的东西:-(啊,你困住了我。我不知道你想要的是什么。你可以构建这样的东西,但这不是为胆小的人准备的。他在他的DisplayForMany
中使用了函子和表达式树。即使你使用了他的函数,你仍然需要为泛型方法指定你的类型。