Для вывода форматированного 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]
Вы также можете посмотреть на использование элемента управления повторителем и установить источник данных для своей коллекции. Это почти та же идея, что и в приведенном выше коде, но я думаю, что этот способ более понятен (на мой взгляд).