2008-09-23 62 views
1

比方說,我有一個類,它存儲了用getter和setter完成的用戶信息,並且它填充了來自XML文件的數據。我將如何迭代該類的所有實例,就像使用java bean和標記庫一樣?迭代類,即。 beans for asp.net

+0

你能詳細解釋一下你想做什麼嗎?你是否試圖迭代你的對象集合來顯示他們的數據?也許我對JavaBeans不熟悉,不知道你在尋找什麼類型的解決方案...... – 2008-09-24 00:18:54

+0

這正是我正在嘗試做的。在java中,我可以使用標籤庫遍歷屬性,然後用html輸出它的值。我正在尋找一種類似的方式來做到這一點與asp.net,或者如果有更好的方式做到這一點,我不知道.net – 2008-09-24 00:27:45

回答

0

這假設你可以獲取你的類的所有實例並將它們添加到通用列表中。

List<YourClass> myObjects = SomeMagicMethodThatGetsAllInstancesOfThatClassAndAddsThemtoTheCollection(); 
foreach (YourClass instance in myObjects) 
{ 
Response.Write(instance.PropertyName.ToString(); 
} 

如果您不想指定每個屬性名稱,則可以使用Reflection(請參閱PropertyInfo)並以此方式進行操作。再次,不知道這是你的意圖。

1

對於輸出格式化的HTML,您有幾個選擇。我可能會做的是在代碼隱藏中創建一個屬性,以訪問要迭代的對象集合。然後,我會編寫用於在.aspx頁面上迭代和格式化它們的邏輯。例如,在.aspx頁面:

[snip] 
<body> 
    <form id="form1" runat="server"> 
     <% Somethings.ForEach(s => { %> 
      <h1><%=s.Name %></h1> 
      <h2><%=s.Id %></h2> 
     <% }); %> 
    </form> 
</body> 
</html> 

然後隱藏代碼:

[snip] 
public partial class _Default : System.Web.UI.Page 
    { 
     protected List<Something> Somethings { get; private set; } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Somethings = GetSomethings(); // Or whatever populates the collection 

     } 
[snip] 

你也可以看看使用中繼器控制和設置DataSource到您的收藏。這與上面的代碼非常相似,但我認爲這種方式更清晰(在我看來)。