2013-02-06 15 views
36

ASP.NET MVCのようにWebFormsのデータをループスルーするにはどうすればよいですか?例えば、MVCでは、これは次のように簡単です:MVCのようにWebFormsのデータをループする方法

WebFormsでこれを行う最も簡単で簡単な方法は何ですか?どのようなコードのように見えるだろうか?

MVCプロジェクトをWebフォームアプリケーションに追加して、MVC機能を使用することはできますか?

ありがとうございました。

あなたはRepeaterコントロールに使用できるWebフォームで

答えて

56

リピータを使用するのではなく、することができます同様のMVCでリストを単にループ<% %><%= %>タグを使用します。

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

限り、あなたはをループしているプロパティは、ASPX/ascxファイルのページからacessibleであるとして、あなたはそれをループすることができます(例えば、保護されたとして宣言またはパブリック)。必要なコードの後ろにコードはありません。

<% %>はコードを評価し、<%= %>は結果を出力します。

宣言の後ろにあなたのコード内のクラスレベルでこのリスト:ここで

は、最も基本的な例である、あなたのaspxファイルでそうそして、文字列の単純なリストです

public List<string> Sites = new List<string> { "StackOverflow", "Super User", "Meta SO" }; 

<% foreach (var site in Sites) { %> <!-- loop through the list --> 
    <div> 
    <%= site %> <!-- write out the name of the site --> 
    </div> 
<% } %> <!--End the for loop --> 
+0

Brandon、このようなことのためにコードを表示することはできますか?ありがとう。 – user1477388

+0

@ user1477388、コードビハインドはありません。リストプロパティがフロントエンドからアクセスできる(コードの背後にあるpublicやprotectedなど)限り、ループすることができます。 MVCでモデルプロパティを設定するのと同様です。 – Brandon

+0

@ user1477388、更新を参照してください。 – Brandon

10

:背後にあるコードでは

<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

あなたが有効なDataSourceの任意の並べ替えとRepeaterSqlDataSourceEntityDataSourceObjectDataSource)オブジェクトを使用することができます。

  1. データソースを定義する
  2. リファレンスあなたのReperater内のDataSource

....

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

...

関連する問題