【发布时间】:2013-07-23 18:08:49
【问题描述】:
我正在使用 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...
也许我做错了,但我认为会有一种简单的方法来输出可重复列的数据。
任何人都可以提供一种有效的方法吗?
【问题讨论】:
-
也请随时告诉我,这一切都错了。对此没有采取任何行动,所以不确定是因为我没有以可以理解的方式解释它还是它太复杂了
标签: c# asp.net-mvc-2 html-helper