ASP.NET 2.0中動態修改頁面標題

iDotNetSpace發表於2009-01-04

在老外的站上看到解決的好方法,故簡單編譯之:

在一個asp.net 的應用中,經常要動態修改頁面的標題,一個典型的例子就是,在一個頁面導航的控制元件中,希望使用者點選哪一個連線,在頁面的title裡就顯示相關的內容,舉個例子,比如一個網站,有如下的網站架構:

有圖書分類,下面再有中國圖書,外國圖書分類,則一般可以用樹形或者asp.net 2.0的新增加的導航欄控制元件(sitemap),來實現,比如

圖書---&gt中國圖書;圖書----&gt外國圖書等,而如果這個時候,能在頁面的

部分,也能顯示比如"圖書--&gt中國圖書"這樣,那就更加直觀明顯了,在asp.net 2.0中,我們可以使用部分的服務端控制元件來實現了,首先,要新增標記 <p>然後可以在page_load事件中,以如下形式改邊其title的內容了,如</p> <p>Page.Header.Title = "The current time is: " & DateTime.Now.ToString() ,也可以簡單寫成page.title</p> <p>然後,我們可以通過這樣的辦法,將其於sitemap控制元件結合了,實現方法如下:</p> <p> </p><table style="BORDER-BOTTOM: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-RIGHT: #cccccc 1px dotted" border="0" cellspacing="0" cellpadding="6" width="95%" align="center"> <tbody> <tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><font color="#ff0000">以下為引用的內容:</font><br> <p>Const DEFAULT_UNNAMED_PAGE_TITLE As String = "Untitled Page"<br>    Const DEFAULT_PAGE_TITLE As String = "Welcome to my Website!!"</p> <p>    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load<br>        'Set the page's title, if needed<br>        If String.IsNullOrEmpty(Page.Title) OrElse Page.Title = DEFAULT_UNNAMED_PAGE_TITLE Then<br>            If SiteMap.CurrentNode Is Nothing Then<br>                Page.Title = DEFAULT_PAGE_TITLE<br>            Else<br>                Page.Title = GetPageTitleBasedOnSiteNavigation()</p> <p>                'Can also use the following if you'd rather<br>                'Page.Title = GetPageTitleBasedOnSiteNavigationUsingRecursion(SiteMap.CurrentNode)<br>            End If<br>        End If<br>    End Sub</p> <p>    Private Function GetPageTitleBasedOnSiteNavigation() As String<br>        If SiteMap.CurrentNode Is Nothing Then<br>            Throw New ArgumentException("currentNode cannot be Nothing")<br>        End If</p> <p>        'We are visiting a page defined in the site map - build up the page title<br>        'based on the site map node's place in the hierarchy</p> <p>        Dim output As String = String.Empty<br>        Dim currentNode As SiteMapNode = SiteMap.CurrentNode</p> <p>        While currentNode IsNot Nothing<br>            If output.Length > 0 Then<br>                utput = currentNode.Title & " :: " & output<br>            Else<br>                utput = currentNode.Title<br>            End If</p> <p>            currentNode = currentNode.ParentNode<br>        End While</p> <p>        Return output<br>    End Function</p></td></tr></tbody></table> <p>在上面的程式碼中,首先預定義了兩個常量,然後逐步建立sitemap的結點,一開始結點是null的,然後再呼叫GetPageTitleBasedOnSiteNavigation() 這個過程,在每建立一個sitemap的結點時,用字串進行連線,最後返回給page.title即可實現,當然也可以用遞迴實現。</p> <p style="clear:both;"></p> <p class="translate"> 來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-526497/,如需轉載,請註明出處,否則將追究法律責任。 </p>

相關文章