public class Person
{
public string First { get; set; }
public string Last { get; set; }
public int Age { get; set; }
public IEnumerable<Child> Children { get; set; }
}
public class Child
{
public string First { get; set; }
public string Last { get; set; }
public int Age { get; set; }
}
我正在寻找一种从我的模型中呈现表格的方法,该表格的类型为IEnumerable<Person>
。我正在尝试生成下表:
<table>
<tr class="person">
<td>First 1</td>
<td>Last 1</td>
<td>1</td>
</tr>
<tr class="child">
<td>First 1</td>
<td>Last 1</td>
<td>1</td>
</tr>
<tr class="child">
<td>First 2</td>
<td>Last 2</td>
<td>2</td>
</tr>
...
...
</table>
每个人都是一排,他们的每个孩子都是人排下的个别行。这将在IEnumerable<Person>
中为每个人重复。
是否有生成这样的表格的网格或组件?我找到了MvcContrib's grid component,但它似乎无法生成这些子行。有没有办法扩展MvcContrib的网格来做到这一点?
答案 0 :(得分:3)
如果输出中只需要一个表格,那么像嵌套循环一样简单的东西能为你工作吗?
<table>
<% foreach (Person person in Model)
{ %>
<tr class="person">
<td><%: person.First %></td>
<td><%: person.Last %></td>
<td><%: person.Age %></td>
</tr>
<% foreach (Child child in person.Children) { %>
<tr class="child">
<td><%: child.First %></td>
<td><%: child.Last %></td>
<td><%: child.Age %></td>
</tr>
<%} %>
<%} %>
</table>
答案 1 :(得分:3)
我会从IPerson
创建它们,然后创建一个DisplayTemplate
,它强烈输入IPerson
然后循环并调用它
public interface IPerson
{
string First { get; set; }
string Last { get; set; }
int Age { get; set; }
}
<%@ Control Language="C#" Inherits="ViewUserControl<IPerson>" %>
<tr class="<%=Model.GetType().Name.ToLower() %>">
<td><%: Model.First %></td>
<td><%: Model.Last %></td>
<td><%: Model.Age %></td>
</tr>
<table>
<% foreach (Person person in Model) { %>
<%=Html.DisplayFor(m => person, "IPersonRow") %>
<% foreach (Child child in person.Children) { %>
<%=Html.DisplayFor(m => child, "IPersonRow") %>
<% } %>
<% } %>
</table>
答案 2 :(得分:0)
那个好问题!!我们可以关注
吗?亲子 父1孩子1,孩子2 父母2孩子3
如果是,
创建一个用户控件,它将打印父项的所有Childs,使用此控件呈现子列。
如果您有任何其他查询,请与我们联系。
让我们一起学习
答案 3 :(得分:0)
您可以使用jQuery插件。以下是相当不错的:
两者都是开源的。有一个商业版的jqGrid,它为您提供了MVC助手,可以轻松创建表。