【问题标题】:How to dynamically add items to bulleted list from code-behind in the master page如何从母版页中的代码隐藏动态将项目添加到项目符号列表
【发布时间】:2018-10-01 09:03:05
【问题描述】:

我的母版页有一个项目符号列表,定义如下:

<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?

【问题讨论】:

  • 我不认为你可以像这样在BulletedList 中添加LinkButton,因为BulletedList 不支持模板。只需使用DisplayMode="LinkButton" 并使用Click 事件来触发回发。
  • @TetsuyaYamamoto 我已经更新了项目符号列表的详细信息。基本上,如果我只想添加文本怎么办?现在我只想修改它。
  • 直接使用headerMenu.Items.Add("my item");,如果headerMenu存在于同一个masterpage中,则不需要使用FindControl
  • 非常感谢。作为一个 ASP.net 的菜鸟,简单的事情常常需要我永远弄清楚。

标签: asp.net master-pages


【解决方案1】:

BulletedList 不允许子控件 发生是因为BulletedList 不支持通常使用Controls.Add() 方法设置的模板控件。这是来自BulletedList.Controls属性的评论:

Controls 属性继承自 Control 类,而不是 适用于BulletedList控件。

相反,您需要使用Items.Add() 方法将ListItem 项目添加到ListItemCollection,假设BulletedList 存在于母版页中:

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 Class

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 2016-08-17
    • 1970-01-01
    • 2021-09-18
    • 2019-07-04
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多