заполните управление списком HTML с помощью.NET

\n не должен рассматриваться конечным пользователем как новая строка, для этого необходимо использовать элемент html <br/>. Параметр / n влияет только на то, как HTML, сгенерированный php, появляется в исходном коде веб-страницы. если вы зайдете на свою веб-страницу и нажмете «просмотреть исходный код», вы увидите сгенерированный php html в виде одной длинной строки. Не красиво Это то, что \n для ; , чтобы разбить этот php-сгенерированный html на более короткие строки. Цель \n - сделать красивую страницу просмотра источника.

8
задан Andy White 29 May 2009 в 06:01
поделиться

4 ответа

Вы можете использовать asp: BulletedList, например

<asp:BulletedList ID="MyList1" CssClass="MyClass" runat="server">
  <asp:ListItem Text="Item1" class="MyClass" />
</asp:BulletedList>

Добавить код добавления, например

ListItem item = new ListItem("Item2");
item.Attributes.Add("class", "MyClass");
MyList1.Items.Add(item);

. Или, если по какой-то конкретной причине вам нужно использовать тег ul, вы можете добавить к нему runat = "server". Например,

<ul id="MyList2" class="MyClass" runat="server">
  <li class="MyClass">Item1</li>
</ul>

С кодом типа

HtmlGenericControl li = new HtmlGenericControl("li");
li.Attributes.Add("class", "MyClass");
li.InnerText = "Item2";
MyList2.Controls.Add(li);
5
ответ дан 5 December 2019 в 07:13
поделиться

вы можете даже используйте этот HTML, добавив runat = "server", вы сможете рассматривать его как HTMLControl, не важно, что это за контроль, я часто делаю это с помощью div

<ul id="myList" runat="server" class="myClass">
    <li class="myItemClass">Item 1</li>
    <li class="myItemClass">Item 2</li>
</ul>

, тогда вы получаете этот HTMLControl и играете с ним

HtmlGenericControl li;

for (int x = 3; x <= 10; x++)
{
    li = new HtmlGenericControl("li");
    li.Attributes.Add("class", "myItemClass");
    li.InnerText = "Item " + x;

    myList.Controls.Add(li);
}

вы закончится:

    <ul id="myList" runat="server" class="myClass">
        <li class="myItemClass">Item 1</li>
        <li class="myItemClass">Item 2</li>
        <li class="myItemClass">Item 3</li>
        <li class="myItemClass">Item 4</li>
        <li class="myItemClass">Item 5</li>
        <li class="myItemClass">Item 6</li>
        <li class="myItemClass">Item 7</li>
        <li class="myItemClass">Item 8</li>
        <li class="myItemClass">Item 9</li>
        <li class="myItemClass">Item 10</li>            
    </ul>

конечно, что вы можете использовать упорядоченный или разупорядочивающий список, они также ниже в веб-элементах управления ASP.NET.

<asp:BulletedList runat="server" ...
15
ответ дан 5 December 2019 в 07:13
поделиться

Самый простой способ решить эту проблему - использовать элемент управления репитером asp

<ul id="myList" class='myClass'>
<asp:Repeater ID="repeaterMyList" Runat="server">
<ItemTemplate>
  <li class="myItemClass">
   <%# Eval("Item") %>
  </li>
</ItemTemplate>
</asp:Repeater>
</ul>

[Edit] - Не забудьте установить источник данных в RepeaterMyList и вызвать привязку данных в элементе управления ретранслятором в выделенном коде.

repeaterMyList.DataSource = someDataTable;
repeaterMyList.DataBind();
2
ответ дан 5 December 2019 в 07:13
поделиться

Я предполагаю, что у вас есть веская причина не использовать элемент управления веб-сервера BulletedList. В любом случае, это интересное упражнение по программированию, которое иллюстрирует внутреннее устройство архитектуры Htmlservercontrol и то, как они отображаются на простые теги HTML.

Теги HTML ul и li не отображаются напрямую как элементы управления HTMLServercontrols. Это означает, что даже если вы добавите в список атрибут runat = "server" , его содержимое не будет напрямую доступно в виде элементов списка.

Однако все элементы управления, не отображенные напрямую как серверные элементы управления Html, доступны через класс HtmlGenericControl . Это позволяет динамически создавать и изменять такие элементы управления.

Таким образом, решение двоякое:

  • Сделайте неупорядоченный список runat = "server" , чтобы вы могли получить к нему доступ на сервере- побочный код. Кроме того, вы должны внести существующие элементы в список runat = "server" , иначе они будут доступны только как LiteralControl , который содержит первые два элемента списка в виде простого текста.
  • В коде откройте содержимое списка и добавьте к нему новый элемент HtmlGenericControl типа «li».

Следующая (самая простая) страница демонстрирует эту процедуру:


<%@ Page Language="VB" AutoEventWireup="false" %>
<%@ Import Namespace="System.Collections.Generic" %>

<script runat="server">

  Private Shared addedItems As List(Of HtmlGenericControl)

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
      'On first load, instantiate the List.
      addedItems = New List(Of HtmlGenericControl)
    End If
  End Sub

  Protected Sub btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    'Add the previously created items to the UL list.
    'This step is necessary because
    '...the previously added items are lost on postback.
    For i As Integer = 0 To addedItems.Count - 1
      myList.Controls.Add(addedItems.Item(i))
    Next

    'Get the existing no. of items in the list
    Dim count As Integer = myList.Controls.Count

    'Create a new list item based on input in textbox.
    Dim li As HtmlGenericControl = CreateBulletItem()

    'Add the new list item at the end of the BulletedList.
    myList.Controls.AddAt(count, li)
    'Also add this newly created list item to the generic list.
    addedItems.Add(li)
  End Sub

  Private Function CreateBulletItem() As HtmlGenericControl
    Dim li As New HtmlGenericControl("li")
    li.InnerText = txtNewItem.Value
    li.Attributes("class") = "myItemClass"

    Return li
  End Function
</script>

<html>
<head runat="server">
  <title>Test Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <ul id="myList" class='myClass' runat="server">
        <li runat="server" class="myItemClass">Item 1</li>
        <li runat="server" class="myItemClass">Item 2</li>
      </ul>
      <input type="text" id="txtNewItem" runat="server" />
      <asp:Button ID="btn1" runat="server" Text="Add" OnClick="btn1_Click" />
    </div>
  </form>
</body>
</html>
1
ответ дан 5 December 2019 в 07:13
поделиться