你正在创建一个用户控件来表示“块”,这是正确的做法,但你缺少一种机制来将它们显示为列表。ASP.NET 有很多可能的解决方案,但最简单的方法是使用
ListView
控件。很难在不知道你的数据长什么样子的情况下提供示例代码,但我们假设你有一个名为
Block
的类:
public class Block
{
public string Title {get; set;}
public string Text { get; set; }
}
为了显示一个块,你需要创建一个用户控件,我们称之为
BlockControl
:
标记:
<div style="margin:10px; padding:10px; background:#eee;">
<h2><%= Block.Title %></h2>
<%= Block.Text %>
</div>
代码后台:
public partial class BlockControl : System.Web.UI.UserControl
{
public Block Block { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
}
然后,在您的.aspx页面中,您可以声明一个ASP.NET ListView控件,并在ListView的ItemTemplate中使用BlockControl来呈现数据。请注意,我们将ListView的当前数据项绑定到BlockControl.Block属性。
<asp:ListView ID="BlockList" runat="server">
<ItemTemplate>
<uc:BlockControl Block="<%# Container.DataItem %>" runat="server" />
</ItemTemplate>
</asp:ListView>
在 .aspx 的后台代码中,您可以设置 ListView 数据源。在您的情况下,数据可能来自数据库,但这里只是一些模拟数据:
protected void Page_Load(object sender, EventArgs e)
{
List<Block> blocks = new List<Block>
{
new Block { Title = "Block1", Text="This is the block 1 content"},
new Block { Title = "Block2", Text="This is the block 2 content"}
};
this.BlockList.DataSource = blocks;
this.BlockList.DataBind();
}
现在你有一个用户控件封装的单个块的演示,ListView提供了一种机制,可以根据你的数据显示可变数量的这些用户控件。