根据URL参数显示网站地图
1. 網站地圖文件Web.sitemap
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
??? <siteMapNode url="~/Default.aspx" title="首頁"? description="首頁" resourceKey="root">
????? <siteMapNode url="~/Category.aspx" title="分類頁" description="分類頁" resourceKey="category">
??????? <siteMapNode url="~/Item.aspx" title="單品頁" description="單品頁" resourceKey="item" />
????? </siteMapNode>
??? </siteMapNode>
</siteMap>
2. 頁面上增加站點地圖控件
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
?</asp:SiteMapPath>
??? 頁面就會顯示出相應的頁面站點地圖名:
??? 首頁、分類頁、單品頁 等
3. 覆寫方法,使得面包屑顯示的名稱更為人性化
??? 比如女裝分類頁面,地圖上不只是顯示:首頁->分類頁,而是顯示為:首頁->女裝分類。
??? 這樣就要在 分類頁Category.aspx ,Page_Load里增加事件:
??? if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["name"]))
?? {
?????? SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
??? }
??? SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
??? 事件說明:
??? SiteMapResolve事件處理動態地改變目前的SiteMapNode。
??? 本頁面覆寫事件方法thisPage_SiteMap_SiteMapResolve:
??????? SiteMapNode thisPage_SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
??????? {
??????????? // 只需要在一個執行一個請求。
??????????? SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
??????????? if (SiteMap.CurrentNode != null)
??????????? {
??????????????? // SiteMap.CurrentNode是只讀的,所以我們需要一個克隆操作。
??????????????? SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
??????????????? currentNode.Title = Request.QueryString["name"];
??????????????? // Use the changed one in the breadcrumb.
??????????????? return currentNode;
??????????? }
??????????? return null;
??????? }
???? 這樣URL :/Category.aspx?name=女裝分類 ,顯示為 : 首頁 > 女裝分類
?4. 覆寫 單品頁 站點地圖面包屑。
???? 在覆寫前,顯示如下 首頁 > 分類頁 > 單品頁
???? 要顯示如下: 首頁 > 女裝分類 >?時尚外套
???? 同上面增加頁面?
???? if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["name"]))
?? {
?????? SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
??? }
??? 覆寫方法:
???
SiteMapNode thisPage_SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
??????? {
??????????? // 只能請求一次
??????????? SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
??????????? if (SiteMap.CurrentNode != null)
??????????? {
??????????????? // SiteMap.CurrentNode是只讀的,所以我們需要一個克隆操作。
??????????????? SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
??????????????? currentNode.Title = Request.QueryString["name"];
??
??//從數據庫取出當前單品的分類名
??????????????? currentNode.ParentNode.Title = Database.GetCategoryByItem(Request.QueryString["name"]);
??????????????? currentNode.ParentNode.Url = "/Category.aspx?name=" + Database.GetCategoryByItem(Request.QueryString["name"]);
??????????????? // 返回改變后的面包屑
??????????????? return currentNode;
??????????? }
??????????? return null;
??????? }
?下載代碼
轉載于:https://www.cnblogs.com/anan/archive/2011/04/15/2016959.html
總結
以上是生活随笔為你收集整理的根据URL参数显示网站地图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1088
- 下一篇: Linq 团队的问题