1. 程式人生 > >asp.net網站MVC開發模式下實現Sitemap(站點導航)的一些經驗教訓

asp.net網站MVC開發模式下實現Sitemap(站點導航)的一些經驗教訓

本來這是一個挺簡單的功能, MVC中雖然已經不再支援原先asp.net的siteMap控制元件,但是已經有開源的專案支援這一功能,那就是---MvcSiteMapProvider,藉助這個專案,我們只需簡單的幾個步驟就可以實現站點導航了。

第二步:解壓這個包,裡面有個src目錄,也就是原始碼,用VS開啟裡面的專案,生成dll。

第三步:將dll新增到我們的專案裡(新增引用)。

第四步:在web.config檔案寫入註冊語句:

<add name="MvcSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" siteMapFile="~/Web.Sitemap" securityTrimmingEnabled="true" cacheDuration="5" enableLocalization="true" scanAssembliesForSiteMapNodes="true" includeAssembliesForScan="" excludeAssembliesForScan="" attributesToIgnore="visibility" nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider" controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider" actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider" siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider" siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
第五步:新增sitemap檔案,,專案的wiki裡面有說明怎樣填充節點:https://github.com/maartenba/MvcSiteMapProvider/wiki/Creating-a-first-sitemap

第六步:在頁面( 一般寫在_layout頁面)裡寫一句顯示訪問節點的語句:

@Html.MvcSiteMap().SiteMapPath()

Ok,大功告成,理論上這時候我們的頁面就會根據當前頁面的controller和action資訊,從sitemap檔案中查詢匹配的名稱顯示出當前的訪問路徑。

有一個必須注意的細節:sitemap裡面通常是一個Home節點包裹其它節點,這時,被包裹的每個節點的controller的名稱空間必須跟HomeController一致,否則子節點將無法讀取路徑到頁面。(我當時鬱悶了半天,有些頁面能顯示路徑,有些頁面不能,一直找不到原因)

下圖是MvcSiteMapProvider專案的gitHub頁面, 紅箭頭處是下載按鈕: