2008-09-23 57 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到您的收藏。这与上面的代码非常相似,但我认为这种方式更清晰(在我看来)。