如何像在 ASP.NET MVC 中那样循环浏览 WebForms 中的数据?例如,在 MVC 中,这很简单:
<table>
@foreach (var myItem in g)
{
@<tr><td>@MyItem.title<td></tr>
}
</table>
后面的代码会是什么样子?
或者,我可以将 MVC 项目添加到 WebForms 应用程序,以便我可以使用 MVC 功能吗?
如何像在 ASP.NET MVC 中那样循环浏览 WebForms 中的数据?例如,在 MVC 中,这很简单:
<table>
@foreach (var myItem in g)
{
@<tr><td>@MyItem.title<td></tr>
}
</table>
后面的代码会是什么样子?
或者,我可以将 MVC 项目添加到 WebForms 应用程序,以便我可以使用 MVC 功能吗?
<% %>
您可以使用and<%= %>
标记以类似的 MVC 类型方式循环遍历列表,而不是使用中继器。
<table>
<% foreach (var myItem in g) { %>
<tr><td><%= myItem.title %></td></tr>
<% } %>
</table>
只要您循环通过的属性可以从aspx/ascx 页面访问(例如声明为受保护或公共),您就可以循环通过它。后面的代码中没有其他代码是必须的。
<% %>
将评估代码并<%= %>
输出结果。
这是最基本的例子:
在您的代码后面的类级别声明此列表:
public List<string> Sites = new List<string> { "StackOverflow", "Super User", "Meta SO" };
这只是一个简单的字符串列表,然后在你的 aspx 文件中
<% foreach (var site in Sites) { %> <!-- loop through the list -->
<div>
<%= site %> <!-- write out the name of the site -->
</div>
<% } %> <!--End the for loop -->
在 WebForm 中,您可以使用 Repeater 控件:
<asp:Repeater id="cdcatalog" runat="server">
<ItemTemplate>
<td><%# Eval("title")%></td>
</ItemTemplate>
</asp:Repeater>
在后面的代码中:
cdcatalog.DataSource = yourData;
cdcatalog.DataBind();
您可以将 aRepeater
与任何类型的有效DataSource
( SqlDataSource
, EntityDataSource
, ObjectDataSource
) 对象一起使用:
……
<asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
<ItemTemplate>
<tr>
<td><%# Eval("PropertyName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
...