2009-07-08 3 views
1

Я просто новичок в ASP.NET. Мой вопрос прост, я хочу динамически добавлять элементы списка из кода за файлом, и я хочу, чтобы каждый элемент имел текст и пару изображений в виде гиперссылок. Образец HTML должен быть таким, как:Индивидуальные маркированные элементы списка в ASP.NET

<ul> 
    <li>do foo &nbsp;<a href="#"><img src="some_image.png" /></a></li> 
    <li>do bar &nbsp;<a href="#"><img src="some_image.png" /></a></li> 
    ... 
</ul> 

Количество элементов зависит от коллекции, полученной кодом за файлом.

P.S. мой код за файлом написан на C#

ответ

18

Управление Repeater - самый простой способ создать индивидуальный маркированный список, плюс он дает вам полный контроль над создаваемым HTML. Для того, чтобы использовать его, настроить шаблон:

<ul> 
<asp:Repeater runat="server" ID="ListRepeater"> 
    <ItemTemplate> 
     <li>do foo &nbsp;<a href='#'><img src='<%# Eval("ImageSource") %>' /></a></li> 
    </ItemTemplate> 
</asp:Repeater> 
</ul> 

Затем в коде-за (или декларативно в разметке, в зависимости от ваших предпочтений), установите источник данных ретранслятора и привязать его:

void Page_Load(object sender, EventArgs e) { 
    // Some method you've defined to get your images 
    List<string> imageList = GetImages(); 
    ListRepeater.DataSource = imageList; 
    ListRepeater.DataBind(); 
} 

ASP.NET отображает шаблон один раз для каждого элемента в вашем источнике данных.

Элемент управления Repeater имеет больше возможностей, чем показано здесь, но это должно помочь вам начать работу. Удачи!


Редактировать: через год после написания этого ответа, я все еще думаю, что повторители являются лучшим вариантом среди серверных элементов управления, но все больше и больше я предпочитаю foreach заявления прямо в моих шаблонах .aspx:

<ul> 
    <% foreach(Image image in this.Images) { %> 
     <li>do foo &nbsp;<a href='#'><img src='<%= image.Source %>' /></a></li> 
    <% } %> 
</ul> 
+0

я думаю, что это должно быть написано как,

    <жерех: Repeater Runat = "сервер" ID = "ListRepeater">
  • сделать Foo
В любом случае, спасибо за руководство – sudarsanyes

+0

Рад помочь! Это правда, что использование «DataBinder.Eval (...)» более ясное, но я не могу заставить себя настаивать на этом (или даже использовать его!). –

6

Просто используйте регулятор Repeater. Просто и легко. :)

+1

Я бы не назвал это простым или легким, но я думаю, что это лучший способ в стандартных веб-формах (+1). Наслаждайтесь событием ItemDataBound. –

Смежные вопросы