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

<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. мой код файла написан на С #

2
sudarsanyes 8 Июл 2009 в 17:00

3 ответа

Лучший ответ

Элемент управления 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>
19
Jeff Sternal 30 Июн 2010 в 18:29
Я думаю, это должно быть написано как,
  • do foo
В любом случае, большое спасибо за руководство
 – 
sudarsanyes
8 Июл 2009 в 18:20
Рад помочь! Это правда, что использование «DataBinder.Eval (...)» более понятно, но я не могу заставить себя настоять на нем (или даже использовать!).
 – 
Jeff Sternal
8 Июл 2009 в 19:53

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

6
leppie 8 Июл 2009 в 17:02
1
Я бы не назвал это простым или легким, но я считаю, что это лучший способ в стандартных веб-формах (+1). Наслаждайтесь событием ItemDataBound.
 – 
Matthew Groves
8 Июл 2009 в 17:08

ASP.Net BulletedList. MSDN

0
William Edmondson 8 Июл 2009 в 17:12