Вы на правильном пути, создавая пользовательский контроль для представления "блока", но вам не хватает механизма, позволяющего отображать их в виде списка.
В ASP.NET есть много возможных решений для этого, но самым простым будет использование элемента управления ListView
.
Трудно предоставить пример кода, не зная, как выглядят ваши данные, но давайте предположим, что у вас есть класс с именем Block
:
public class Block
{
public string Title {get; set;}
public string Text { get; set; }
}
Чтобы отобразить один блок, вы должны создать пользовательский элемент управления, назовем его BlockControl
:
Markup:
<div style="margin:10px; padding:10px; background:#eee;">
<h2><%= Block.Title %></h2>
<%= Block.Text %>
</div>
Код-за:
public partial class BlockControl : System.Web.UI.UserControl
{
//Note the public property, we'll use this to data bind the ListView's item to the user control
public Block Block { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
}
Затем на своей странице .aspx вы можете объявить элемент управления ASP.NET ListView и использовать BlockControl в ItemTemplate ListView для представления данных. Обратите внимание, как мы привязываем текущий элемент данных 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 предоставляет вам механизм для отображения переменного числа этих пользовательских элементов управления на основе ваших данных.