具體的實現方法如下:
在網站的mastERPage中加入以下代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeyWords;
}
if (SiteMap.CurrentNode != null)
{
this.Page.Title = SiteMap.CurrentNode.Title;
}
else
{
this.Page.Title = "尚未在Web.sitemap配置此頁面導航";
}
}
protected override void Render(HtmlTextWriter writer)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(writer);
}
解釋:
一、之所以不在(!this.IsPostBack){}塊中實現頁面判斷是因為page.Title中無法保存視圖狀態,我覺得這是.Net2.0中的一個小bug吧。
二、之所以在render方法重寫title屬性是因為在頁面的生存期中,render方法不會保存vIEwstate,而從寫page.Title內容僅在masterpage中有效是因為masterpage負責頁面標題的render,在其後的page的render方法中,title已經render完畢,些時改變title並不會影響render的結果。