2013-02-06 23 views
36

如何在ASP.NET MVC中循環遍歷WebForms中的數據?例如,在MVC中,這很簡單:如何在MVC中循環遍歷WebForms中的數據

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

什麼是在WebForms中執行此操作的最簡單最簡單的方法?背後的代碼是什麼樣的?

或者,我可以添加一個MVC項目到webforms應用程序,以便我可以使用MVC功能,而不是?

謝謝。

回答

56

除了使用中繼器,你可以通過類似的MVC列表循環鍵入方式使用<% %><%= %>標籤。

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

只要你通過循環的屬性是從ASPX/ASCX頁acessible(例如或聲明爲受保護的公開),您可以通過它循環。必要的代碼中沒有其他代碼。

<% %>將評估代碼並且<%= %>將輸出結果。

這裏最簡單的例子:

聲明此清單在代碼中你的職業等級後面:

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 --> 
+0

布蘭登,你能告訴我這樣的東西背後的代碼嗎?謝謝。 – user1477388

+0

@ user1477388,沒有隱藏代碼。只要您的列表屬性可供前端訪問(例如公開或在後面的代碼中保護),那麼您可以循環訪問它。類似於在MVC中設置模型屬性。 – Brandon

+0

@ user1477388,請參閱更新。 – Brandon

10

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

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

在後面的代碼:

cdcatalog.DataSource = yourData; 
cdcatalog.DataBind(); 
+0

謝謝,但背後的代碼看起來像這樣的東西? – user1477388

+0

我更新了我的答案 – phnkha

+3

由於.NET 4.5 Repeater是鍵入的,因此您不應該使用Eval()。改爲使用ItemType屬性。 –

1

您可以使用Repeater與任何類型的有效DataSourceSqlDataSourceEntityDataSourceObjectDataSource)對象:

  1. 定義數據源
  2. 參考您的Reperater數據源

....

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

...