2010-12-11 3 views
3

Мне было интересно узнать, позволяет ли нам asp.net динамически генерировать HTML-строку на странице источника .aspx (а не код).Динамически сгенерировать HTML в ASP.NET

Для тестирования я создал следующую простую страницу .aspx ...

В моей asp.net коды позади меня есть следующий:

protected List<string> myList = null; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (myList == null) 
      myList = new List<string>(); 

     myList.Add("One String"); 
     myList.Add("Two String"); 
     myList.Add("Three String"); 
     myList.Add("Four String"); 

     this.Repeater1.DataSource = myList; 
     this.Repeater1.DataBind(); 
    } 

На соответствующей странице Источника у меня есть:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <ol> 
     <asp:Repeater ID="Repeater1" runat="server"> 
      <ItemTemplate> 
       <li> 
        <%# DataBinder.GetDataItem(myList) %> 
       </li> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ol> 
</body> 
</html> 

результирующая страница .aspx является:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title> 

</title></head> 
<body> 
    <ol> 

       <li></li> 

       <li></li> 

       <li></li> 

       <li></li> 

    </ol> 
</body> 
</html> 

Обратите внимание, что элемент Repeater фактически создал четыре элемента списка. Однако содержимое (One String, Two String и т. Д.) Списка myList не было отправлено на поездку.

Что нужно сделать, чтобы оценить список myList и получить его значения внутри тегов элемента списка? Кстати, я не заинтересован в том, как использовать элемент Repeater специально, поэтому, если есть решение этой проблемы, которая не включает элемент управления Repeater, я в порядке с этим.

Примечание: Я знаю, что я могу привязать общий список «myList» к asp: BulletedList и получить тот же результат. Меня больше интересует динамическое создание HTML-строки исходной страницы.

ответ

6

Используйте этот код:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <li> 
      <%# Container.DataItem %> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 

Если вам необходимо связать источник со списком объектов со свойствами, попробуйте использовать:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <li> 
      <%# Eval("PropertyName") %> 
      or 
      <%# Eval("PropertyName","DataFormat") %> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 

Надеется, что это поможет вам с вашим вопросом. Удачи в кодировании !!!

С уважением, Dima.

+0

Спасибо, Дима. Только то, что я искал. – Jed

+0

Добро пожаловать) –

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