ASP.NET網站導覽(一)

來源:互聯網
上載者:User

這幾天閑來無事,就在園子裡找前輩們關於ASP.NET網站導覽的東西,找了好半天,不過頗有收穫,呵呵!但是我想先把我自己看到的關於ASP.NET網站導覽控制項的知識摘抄下來,以備後用:

您可以使用 ASP.NET 網站導覽功能為使用者導航網站提供一致的方法。隨著網站內容的增加以及您在網站內來回移動網頁,管理所有的連結可能會變得比較困難。ASP.NET 網站導覽使您能夠將指向所有頁面的連結儲存在一個中央位置,並在列表中呈現這些連結,或用一個特定 Web 伺服器控制項在每頁上呈現導覽功能表。

若要為網站建立一致的、容易管理的導航解決方案,可以使用 ASP.NET 網站導覽。ASP.NET 網站導覽提供下列功能:

  • 網站地圖 您可以使用網站地圖描述網站的邏輯結構。接著,可通過在添加或移除頁面時修改網站地圖(而不是修改所有網頁的超連結)來管理頁導航。

  • ASP.NET 控制項 您可以使用 ASP.NET 控制項在網頁上顯示導覽功能表。導覽功能表以網站地圖為基礎。

  • 編程式控制件 您可以以代碼方式使用 ASP.NET 網站導覽,以建立自訂導航控制項或修改在導覽功能表中顯示的資訊的位置。

  • 訪問規則 您可以配置用於在導覽功能表中顯示或隱藏連結的訪問規則。

  • 自訂網站地圖提供者 您可以建立自訂網站地圖提供者,以便使用自己的網站地圖後端(如儲存連結資訊的資料庫),並將提供者插入到 ASP.NET 網站導覽系統。

網站導覽如何工作

通過 ASP.NET 網站導覽,可以按階層描述網站的布局。例如,一家虛擬線上電腦商店的網站共有八頁,其布局如下。

Home
   Products
      Hardware
      Software
   Services
      Training
      Consulting
      Support

若要使用網站導覽,請先建立一個網站地圖或網站的表示形式。您可以用 XML 檔案描述網站的階層,但也可以使用其他方法。有關更多資訊及樣本,請參見 ASP.NET 網站地圖。

在建立網站地圖後,可以使用網站導覽控制項在 ASP.NET 頁上顯示導航結構。有關樣本,請參見如何:添加簡單的網站導覽。

網站地圖載入進程

預設的 ASP.NET 網站地圖提供者會載入網站地圖資料作為 XML 文檔,並在應用程式啟動時將其作為待用資料進行緩衝。超大型網站地圖檔在載入時可能要佔用大量的記憶體和 CPU 資源。ASP.NET 網站導覽功能根據檔案通知來使導航資料保持為最新的。更改網站地圖檔時,ASP.NET 會重新載入網站地圖資料。請確保將所有病毒掃描軟體配置為不會修改網站地圖檔。有關更多資訊,請參見保證 ASP.NET 網站導覽的安全。

網站導覽控制項

建立一個反映網站結構的網站地圖只完成了 ASP.NET 網站導覽系統的一部分。導航系統的另一部分是在 ASP.NET 網頁中顯示導航結構,這樣使用者就可以在網站內輕鬆地移動。通過使用下列 ASP.NET 網站導覽控制項,您可以輕鬆地在頁面中建立導航資訊:

  • 此控制項顯示導航路徑(也稱為麵包屑或眉毛連結)向使用者顯示當前頁面的位置,並以連結的形式顯示返回首頁的路徑。此控制項提供了許多可供自訂連結的外觀的選項。

  • 此控制項顯示一個樹狀結構或菜單,讓使用者可以遍曆訪問網站中的不同頁面。單擊包含子節點的節點可將其展開或摺疊。

  • 此控制項顯示一個可展開的菜單,讓使用者可以遍曆訪問網站中的不同頁面。將游標懸停在菜單上時,將展開包含子節點的節點。

如果在上述樣本中將 控制項添加到線上電腦商店的“Training”(培訓)頁中, 控制項將顯示如下內容,其中“Home”(首頁)和“Services”(服務)呈現為超連結的形式:

首頁 > 服務 > 培訓

您可以使用 控制項建立網站導覽,既不用編寫代碼,也不用顯式綁定資料。此控制項可自動讀取和呈現網站地圖資訊。但是,如果需要,也可以使用代碼自訂 控制項。有關樣本,請參見如何:以編程方式修改記憶體中的網站地圖節點。

控制項使使用者能夠從當前頁導航回網站階層中較高的頁。但是, 控制項不允許從當前頁向前置航到階層中較深的其他頁面。在新聞群組或留言板應用程式中,當使用者想要查看他們正在瀏覽的文章的路徑時,就可以使用 控制項。

通過 或 控制項,使用者可以開啟節點並直接導航到特定的頁。這些控制項不會像 控制項那樣直接讀取網站地圖。相反,您需要在頁上添加一個可讀取網站地圖的 控制項。然後,將 或 控制項綁定到 控制項,從而將網站地圖呈現在該頁上。 控制項將顯示如下的類似內容:

- Home

- Services

+ 培訓

注意:

在網站中的所有頁上顯示、 或 控制項有一個簡便方法,就是先建立一個主版頁面,然後將這些控制項添加到該頁上。有關更多資訊,請參見 ASP.NET 主版頁面概述。

網站導覽 API

通過導航控制項,您只需編寫極少的代碼甚至不需要代碼,就可以在頁面中添加網站導覽;不過您也能以編程的方式處理網站導覽。當 Web 應用程式運行時,ASP.NET 公開一個反映網站地圖結構的  對象。 對象的所有成員均為靜態成員。而 對象會公開 對象的集合,這些對象包含地圖中每個節點的屬性。(在使用 控制項時,該控制項會使用 和 對象自動呈現相應的連結。

SiteMapNode 對象表示網站地圖結構中的一個網站頁面。SiteMapNode 對象由靜態 SiteMap 類使用一個或多個網站地圖提供者在運行時載入,從而將網站地圖資料從永久儲存區載入到記憶體中。SiteMapNode 對象由 SiteMapNodeItem 類封裝以供 Web 伺服器控制項(如 SiteMapPath 控制項)使用。

SiteMapNode 類包括幾個用於描述網站中單個頁(包括某一頁)的屬性,如 Url、Title 和 Description 屬性; 而 Url 屬性由作為 ASP.NET 預設網站地圖提供者的 XmlSiteMapProvider 類使用,該類將這一屬性作為內部集合的尋找鍵,提供者用這個尋找鍵來跟蹤節點。SiteMapNode 類支援一個基本的 Key 屬性,網站地圖提供者使用該屬性來跟蹤節點。此外,Url 屬性還由導航控制項使用,以便呈現導航結構中頁面的超連結。Title 屬性是 SiteMapNode 的易記名稱,通常與 Web Form的 HTML 標題相同,並由導航控制項用於呈現簡單的標籤。最後,附加 Attributes 屬性的 集合可供某些網站地圖提供者使用,這些提供者使用 SiteMapNode 對象,但需要 SiteMapNode 基類中未提供的附加屬性。

您可以在自己的代碼中使用、 和 對象來遍曆網站地圖結構,或建立自訂的控制項來顯示網站地圖資料。您不能向網站地圖進行寫入,但可以在對象的執行個體中修改網站地圖節點。有關更多資訊,請參見如何:以編程方式修改記憶體中的網站地圖節點或如何:以編程方式枚舉網站地圖節點。

即需填充 TreeNode 資料

靜態定義資料結構有時是不可行的,或者資料可能會依賴運行時收集的資訊。為了動態顯示資料, 控制項支援動態節點填充。將 控制項配置為即需填充時,該控制項將在使用者展開節點時引發事件。事件處理常式檢索相應資料,然後填充到使用者單擊的節點。若要以資料即需填充 對象,請將節點的 屬性設定為 true,並建立 事件處理常式以向 對象中填充資料。

用戶端 TreeView 節點填充

任何在瀏覽器功能設定檔中將 屬性設定為 true 的瀏覽器都支援用戶端節點填充。

藉助用戶端節點填充, 控制項可以通過從用戶端指令碼中調用伺服器的 事件來填充節點,而無需完全回傳至伺服器。有關用戶端節點填充的更多資訊,請參見。

啟用用戶端指令碼

預設情況下,在進階 (Up-level) 瀏覽器中, 控制項上的節點的展開 - 摺疊功能是使用用戶端指令碼執行的。由於控制項不需要回傳至伺服器來呈現新配置,所以使用用戶端指令碼可以提高呈現的效率。

注意:

如果瀏覽器中的用戶端指令碼被禁用或瀏覽器不支援用戶端指令碼,則 控制項將恢複到低級(Down-level)模式並在每次使用者單擊節點時回傳到伺服器。

TreeView 回傳

預設情況下,除非瀏覽器不支援用戶端指令碼或者 屬性被設定為 false,否則 控制項將在用戶端處理展開 - 摺疊功能。如果 屬性被設定為 true 並且瀏覽器支援用戶端指令碼,那麼 控制項將從伺服器檢索資料,而不回傳整頁。

當 控制項處於選擇模式時,每次使用者單擊節點時都將回傳到伺服器並引發 事件。

通常,您應該在 控制項處於選擇模式或正在動態填充節點時處理回傳事件。原因是 或 屬性已設定為 true。

將 TreeView 控制項與 UpdatePanel 控制項一起使用

控制項用於通過回傳更新頁面的選定地區,而不是更新整個頁面。可在 控制項內使用 控制項,但具有以下限制:

  • 回調必須與非同步回傳關聯,否則回調事件驗證將會失敗。在將 控制項的 屬性設定為 true 時,即啟用了回調。可以使用以下方法之一來確保 回調對 控制項起作用:

    • 如果 控制項不在 控制項內,則在不是非同步回傳的一部分的 控制項上禁用回調。為此,需要將 屬性設定為 false。

    • 以編程方式重新整理在非同步回傳過程中註冊回調的所有控制項。例如,可以將 控制項放置在 控制項內。 控制項不必位於發起非同步回傳的 控制項中,只要包含 控制項的 控制項重新整理即可。

  • 必須使用對階層式樣式表 (CSS) 類的引用來應用樣式。例如,使用屬性-CssClass(其中屬性指 Property)屬性 (Attribute) 來設定樣式,而不是使用屬性-子屬性(其中屬性指 Property)屬性 (Attribute) 設定 屬性 (Property)。同樣,在使用 模板設定樣式時,請使用模板的 CssClass 屬性 (Attribute)。

  • 屬性必須為 true(預設值)。此外,如果對 控制項啟用了回調,則不能在非同步回傳之間更改 屬性。

有關使用 控制項的更多資訊,請參見 UpdatePanel 控制項概述和部分頁呈現概述。

 

網站導覽組件之間的關係

下面的示範了各個 ASP.NET 網站導覽組件之間的關係。

抄自MSDN

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.