我的主页上有一个项目符号列表,定义如下:
<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?
答案 0 :(得分: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"));
}