52

如何像在 ASP.NET MVC 中那样循环浏览 WebForms 中的数据?例如,在 MVC 中,这很简单:

<table>
    @foreach (var myItem in g)
    { 
        @<tr><td>@MyItem.title<td></tr>
    }
</table>

后面的代码会是什么样子?

或者,我可以将 MVC 项目添加到 WebForms 应用程序,以便我可以使用 MVC 功能吗?

4

3 回答 3

85

<% %>您可以使用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 -->
于 2013-02-06T15:41:56.300 回答
13

在 WebForm 中,您可以使用 Repeater 控件:

<asp:Repeater id="cdcatalog" runat="server">
   <ItemTemplate>
       <td><%# Eval("title")%></td>
   </ItemTemplate>
</asp:Repeater>

在后面的代码中:

cdcatalog.DataSource = yourData;
cdcatalog.DataBind();
于 2013-02-06T15:40:33.913 回答
2

您可以将 aRepeater与任何类型的有效DataSource( SqlDataSource, EntityDataSource, ObjectDataSource) 对象一起使用:

  1. 定义数据源
  2. 引用 Reperator 中的数据源

……

 <asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
       <ItemTemplate>
          <tr>
                <td><%# Eval("PropertyName") %></td> 
          </tr>
    </ItemTemplate>
    </asp:Repeater>

...

于 2013-02-06T15:41:44.240 回答