如果不斷變化的母版頁中的內容在代碼中的子頁面的背後你的罰款,你可以做到以下幾點:
添加中用runat =「服務器」的HTML控件中要編輯母版頁:
的Site.Master
...
<ul id="menu" runat="server">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
...
然後在需要更改的菜單內容的子頁面背後的代碼,把下面的代碼:
protected void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl c = Master.FindControl("menu") as HtmlGenericControl;
if (c != null)
{
c.Controls.Clear();
c.Controls.Add(new HtmlGenericControl("li") { InnerHtml = "<a href=\"#\">Link 3</a>" });
}
}
或任何你想放在菜單控件中的html。
沒有代碼將輸出下面的HTML的頁面:
<ul id="ctl00_menu">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
並用代碼顯示如下頁面:
<ul id="ctl00_menu">
<li><a href="#">Link 3</a></li>
</ul>
顯然你不希望使用此代碼原樣。這只是一個原型。我會重構它以允許將內容添加到任何控件並將其投入到所有頁面將繼承的基本頁面類中。
應該可能在Init而不是Page_Load中做到這一點,以便在betterMenu上獲得事件觸發。 – Bryan 2009-10-20 23:32:33
我會記住這個提示。是的,如果需要,最好在初始階段添加控制權併爲生命週期事件註冊。 – terR0Q 2009-11-19 19:21:19
這假定使用母版頁的頁面沒有ContentPlaceHolder1的asp:Content控件。我想找到一種方法來訪問默認內容,即使添加了asp:Content。 – 2009-11-19 19:36:32