Как динамически добавлять элементы в маркированный список из кода на главной странице - PullRequest
0 голосов
/ 01 октября 2018

Моя главная страница имеет маркированный список, определенный следующим образом:

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
   <ul class="nav navbar-nav">
        <li>
            <asp:LinkButton ID="btnHome" runat="server" class="active" CausesValidation="false">Home </asp:LinkButton>
        </li>
        <li>
            <asp:BulletedList ID="headerMenu" DisplayMode="LinkButton" class="nav navbar-nav" CausesValidation="false" runat="server">
            </asp:BulletedList>
        </li>
   </ul>
</div>

Теперь я пытаюсь получить к нему доступ со страницы содержимого (потомка мастера) "_Default.cs" и добавить к ней некоторые элементы,Ниже приведено то, что я уже пробовал, но оно не работает, так как я получаю сообщение об ошибке 'System.Web.UI.WebControls.BulletedList' не допускает дочерние элементы управления.

public partial class _Default : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
            LinkButton mybl = new LinkButton();
            mybl.Text = "my item";
            BulletedList Bl = (BulletedList)Master.FindControl("headerMenu");
            if (Bl != null) {
                Bl.Controls.Add(mybl);
            }

        }
    }

}

Как я могу динамически изменить главную страницу и изменить BulletedList со страницы моего дочернего содержимого?

1 Ответ

0 голосов
/ 01 октября 2018

BulletedList не разрешает дочерние элементы управления произошло, потому что BulletedList не поддерживает шаблонные элементы управления, которые обычно устанавливаются методом Controls.Add().Вот замечание от свойства BulletedList.Controls:

Свойство Controls унаследовано от класса Control и не применимо к элементу управления BulletedList.

Вместо этого вам нужно добавить ListItem элементы в ListItemCollection, используя метод Items.Add(), предполагая, что * * * * * * * * * * существует внутри главной страницы:

if (!IsPostBack) {
    headerMenu.Items.Add(new ListItem("my item"));
}

Если вы хотите, чтобы текст элемента вместе с URL-адресом, поместите URL-адрес в качестве второго параметра ListItem:

if (!IsPostBack) {
    headerMenu.Items.Add(new ListItem("my item", "http://path/to/url"));
}

Ссылка: Класс BulletedList

...