ASP.NET MVCのようにWebFormsのデータをループするにはどうすればよいですか?たとえば、MVCでは、これは次のように簡単です。
<table>
@foreach (var myItem in g)
{
@<tr><td>@MyItem.title<td></tr>
}
</table>
背後のコードはどのように見えますか?
または、MVC機能を使用できるように、MVCプロジェクトをWebFormsアプリケーションに追加できますか?
リピーターを使用するのではなく、<% %>
および<%= %>
タグを使用して、同様の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();
Repeater
を、あらゆる種類の有効なDataSource
(SqlDataSource
、EntityDataSource
、ObjectDataSource
)オブジェクトと共に使用できます。
....
<asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
<ItemTemplate>
<tr>
<td><%# Eval("PropertyName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
...