我正在寻找一个 MVC2 自定义 htmlHelper,它允许我在给定数据的情况下动态创建 X 数量的列。
比如说我有一个 Zoo 类,其中包含一个 Animals 列表(它还包含一个子类)。前任:
public class Zoo
{
public List<Animals> myAnimals;
}
public class Animals
{
public string year;
public WarmClimate warm;
public class WarmClimate {
public string hippo;
public string zebra;
public string elephant;
etc...
}
}
我想创建一个类似于以下的表。基本上为我拥有的每个动物列表创建一个列。可能是 4 列数据,也可能是 30。
| | 2011 | 2012 | 2013 | 2014 |
| hypo | 6 | 1 | 7 | 0 |
| zebra | 1 | 1 | 2 | 1 |
| elephant | 1 | 1 | 3 | 0 |
我目前有这样的东西;这是非常基本的。简单的 for 循环遍历获取定义的属性值的列表。如果我的班上有 100 只动物,那么像这样有 100 个 for 循环的页面就是一场噩梦。
<tr>
<td>Zebras: </td>
<%
for (int i = 0; i < Model.myAnimals.Count; i++)
{
%>
<td><%= Html.EditorFor(x => x.myAnimals[i].warm.zebra) %></td>
<%
}
%>
</tr>
我想用一个自定义的 htmlhelper 替换它,它可以让我做类似的事情:
<tr>
<td>Zebras: </td>
<%= Html.MyCustHelper( property?? , list??, expression??) %>
</tr>
MyCustHelper 将返回适当的 html,并为模型绑定正确填充了 NAME 属性,就像我使用Html.EditorFor()
帮助器时所做的那样,例如:
<td><input name="myAnimals[2].warm.zebra" id="myAnimals_2__warm_zebra" type="text" value="1"></td> etc.... etc...
也许我做错了,但我认为会有一种简单的方法来输出值得重复的数据列。
任何人都可以提供一种有效的方法吗?