我正在从asp.net站点将站点迁移到asp.net,其中一个页面有一个数据列表,如下所示:
<asp:DataList ID="MyDataList" runat="server" BackColor="#EEEEEE" CellPadding="10"
ItemStyle-HorizontalAlign="Center" GridLines="Both" Width="750" RepeatDirection="Horizontal"
RepeatColumns="4" RepeatLayout="Table" ItemStyle-VerticalAlign="Top">
<ItemTemplate>
<table>
<tr align="center">
<td valign="top">
<table>
<tr>
<td width="30%">
</td>
<td>
<asp:HyperLink ID="HyperLink1" runat="server">
<asp:Image style="cursor:pointer" CssClass="instant ishadow50" ID="lnkEnlarge" runat="server"></asp:Image></asp:HyperLink>
</td>
<td width="30%">
</td>
</tr>
</table>
</td>
</tr>
<tr align="center">
<td>
<asp:Label CssClass="Comments" ID="lblComment" runat="server"></asp:Label><br>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
asp.net-mvc中的等价物是什么。我将如何进行迁移?
答案 0 :(得分:5)
ASP.NET MVC没有服务器控件。 你可以在你的模型上使用一个简单的 foreach 循环(你也可以使用局部视图)。
不同的选择是写一个Html helper。
答案 1 :(得分:3)
@{
//repeatdirection = Horizontal, RepeatColumns = 4
const int NumberOfColumns = 4;
int skip = 0;
var items = Model.DataStuff.Skip(skip).Take(NumberOfColumns);
while(items.Count() > 0) {
<tr>
@foreach (var item in items) {
<td>
@Html.ActionLink(item.Name...etc)
</td>
}
</tr>
skip += NumberOfColumns;
items = Model.Skip(skip).Take(NumberOfColumns);
}
}
答案 2 :(得分:2)
正如CD指出的那样,基本的方法就是编写Html。把它带回旧学校。如果您更喜欢采用更抽象的方法,那么可以使用一些更高级的助手。对于像这样的东西来说,一个很好的选择就是MvcContrib grid - 它通常会让你在使用MVC风格时不会直接生成html。
注意:链接指向MvcContrib网格版本,该版本在撰写本文时会在CodePlex上发布公开发布日期,您需要获取源代码并构建自己的源代码以利用它。