日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

关于ASP.NET 中站点地图sitemap 的使用

發(fā)布時間:2025/6/17 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于ASP.NET 中站点地图sitemap 的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在ASP.NET? MVC 如此火熱的時期,我竟然不適時宜的談起ASP.NET ,恐怕會引來一陣嘲笑。最為無趣的是,講解的竟然還是其中的一個控件。oh~~? my god!my out! ^_^

?

SiteMapPath 控件簡介

SiteMapPath 控件是一種站點導(dǎo)航控件,反映了SiteMap 對象提供的數(shù)據(jù)。它提供了一種定位站點的方式,動態(tài)顯示當(dāng)前頁在站點中的相對位置,并提供了從當(dāng)前頁向上跳轉(zhuǎn)的快捷方式。

SiteMapPath 控件直接使用了站點地圖(.sitemap)中配置的數(shù)據(jù)(無需通過SiteMapDataSource數(shù)據(jù)源控件)。

?

示例一:SiteMapPath 控件的簡單使用

1、創(chuàng)建 Web.sitemap 文件

在您的網(wǎng)站的根目錄中創(chuàng)建一個名為 Web.sitemap 的文件。

打開此 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=""> <siteMapNode url="Second.aspx" title="二頁" description="" /> <siteMapNode url="Third.aspx" title="三頁" description="" /> </siteMapNode> </siteMap>

注意:
○? 如果在url 屬性值中,列出了不存在的 URL 或列出了重復(fù)的 URL,將導(dǎo)致請求Web 應(yīng)用程序?qū)⑹ ?/p>

○? 如果在url 屬性值中,添加了相關(guān)參數(shù)(如:url="Second.aspx?id=1"),也有可能導(dǎo)致請求Web 應(yīng)用程序?qū)⑹ ?/p>

○? 在url 屬性值中,可以“~/”快捷鍵開頭,該快捷鍵表示應(yīng)用程序根目錄。

?

2、添加SiteMapPath 控件

向網(wǎng)頁Default.aspx 添加站點導(dǎo)航控件,其代碼如下:

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>Simple Navigation Controls</title> </head> <body> <form id="form1" runat="server"> <h2>Using SiteMapPath</h2> <asp:SiteMapPath ID="SiteMapPath1" Runat="server"></asp:SiteMapPath> <!-- 此處的 SiteMapDataSource 控件是提供給TreeView 和 Menu 使用 --> <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" /> <h2>Using TreeView</h2> <asp:TreeView ID="TreeView1" Runat="Server" DataSourceID="SiteMapDataSource1" /> <h2>Using Menu</h2> <asp:Menu ID="Menu2" Runat="server" DataSourceID="SiteMapDataSource1"/> <h2>Using a Horizontal Menu</h2> <asp:Menu ID="Menu1" Runat="server" DataSourceID="SiteMapDataSource1" Orientation="Horizontal" StaticDisplayLevels="2" /> </form> </body> </html>

注意:

○? 只要在頁面上拖放SiteMapPath 控件,頁面就會自動顯示站點地圖。

○? 此處代碼順便演示了SiteMapDataSource 控件如何提供給TreeView 和 Menu 使用。

?

示例二:如何在根站點地圖中添加子站點地圖文件

默認(rèn)情況下,ASP.NET 站點導(dǎo)航使用一個名為 Web.sitemap 的 XML 文件,該文件描述網(wǎng)站的層次結(jié)構(gòu)。
但是,也有可能要使用多個站點地圖文件或站點地圖提供程序來描述整個網(wǎng)站的導(dǎo)航結(jié)構(gòu)。

?

1、若要為一個站點配置多個子站點地圖,首先在根目錄的站點地圖中設(shè)置子站點地圖的節(jié)點。

在根站點地圖Web.sitemap 中,將下面的 SiteMapNode 添加到文件的相應(yīng)位置,代碼如下:

<siteMapNode siteMapFile="~/News/News.sitemap" />

添加完以上節(jié)點后,根目錄下的站點地圖(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=""> <siteMapNode url="Second.aspx" title="二頁" description="" /> <siteMapNode url="Third.aspx" title="三頁" description="" /> <siteMapNode siteMapFile="~/News/News.sitemap" /> </siteMapNode> </siteMap>

?

2、添加子站點,并創(chuàng)建相應(yīng)的子目錄的站點地圖文件(News.sitemap),其代碼如下:

<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="~/News/NewsIndex.aspx" title="新聞首頁" description=""> <siteMapNode url="~/News/Sports.aspx" title="體育新聞" description="" /> <siteMapNode url="~/News/Stars.aspx" title="明星新聞" description="" /> </siteMapNode> </siteMap>

注意:子站點地圖中,url 屬性值一定要使用以“~/”快捷鍵開頭的應(yīng)用程序根目錄路徑,如:url="~/News/Stars.aspx"

?

示例三:如何動態(tài)修改站點地圖sitemap 中的屬性值

一個頁面的內(nèi)容要根據(jù)上一個頁面所點擊的鏈接來動態(tài)改變,這個倒是可以通過頁面間的參數(shù)傳遞來實現(xiàn)。

但是,如果站點地圖(如:BBS.sitemap)中,相關(guān)節(jié)點 < siteMapNode > 的 title 屬性值也要根據(jù)所點擊的鏈接來動態(tài)改變,則需要通過一定的編碼來實現(xiàn)。

在此舉例如下:

一個論壇首頁(BBSIndex.aspx)上有相關(guān)版塊的超鏈接(如:Java 版塊鏈接、C# 版塊鏈接、SQL 版塊鏈接),點擊某一個版塊鏈接后,跳轉(zhuǎn)到論壇主題(Topic.aspx)頁面。而該論壇主題(Topic.aspx)頁面套用了一個模板頁(TopicMaster.master),該模板頁(TopicMaster.master)中添加了SiteMapPath 控件,該控件用來顯示當(dāng)前頁面的版塊名稱,而該名稱的字符值是從站點地圖(BBS.sitemap)中相對應(yīng)的節(jié)點(siteMapNode)取其 title 屬性值

其站點結(jié)構(gòu)如下圖所示:

?

BBS.sitemap 文件的代碼如下:

<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="~/BBS/BBSIndex.aspx" title="BBS首頁" description=""> <siteMapNode url="~/BBS/Topic.aspx" title="" description="" /> </siteMapNode> </siteMap>

注意:url="~/BBS/Topic.aspx" 的節(jié)點siteMapNode 其title 屬性值為空字符串,它將通過在母版頁(TopicMaster.master)中編碼實現(xiàn)動態(tài)改變!

?

母版頁(TopicMaster.master)的后臺代碼如下:

public partial class BBS_TopicMaster : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { //當(dāng)訪問SiteMap.CurrentNode 屬性時發(fā)生 SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); Label1.Text = Request.QueryString["class"]; } SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e) { //當(dāng)在母版中獲得當(dāng)前頁面的Request對象時,必須使用如下方法: HttpRequest currRequest = System.Web.HttpContext.Current.Request; string _classQuerySteing = currRequest.QueryString["class"]; if (null != _classQuerySteing) { /* SiteMap.CurrentNode對象是 BBS.sitemap 文件的當(dāng)前節(jié)點值。 * 而SiteMap.CurrentNode 對象在SiteMap類中只讀, * 所以克隆一個SiteMapNode,并修改其對象的Title屬性值。 */ SiteMapNode currMapNode = SiteMap.CurrentNode.Clone(false); switch (_classQuerySteing) { case "java": currMapNode.Title = "Java 主題"; //currMapNode.Url = "Topic.aspx?class=java"; break; case "csharp": currMapNode.Title = "C# 主題"; break; case "sql": currMapNode.Title = "SQL 主題"; break; default: currMapNode.Title = "無主題"; break; } return currMapNode; } else { return SiteMap.CurrentNode; } } }

注意:

○? 這里是通過在模板頁中給SiteMap 對象添加事件:SiteMap.SiteMapResolve += new SiteMapResolveEventHandler 以實現(xiàn)對站點地圖的動態(tài)修改,該事件將在當(dāng)訪問SiteMap.CurrentNode 屬性時出發(fā);

○? SiteMap.CurrentNode 對象是只讀的,我通過對該對象的克隆來復(fù)制一個SiteMapNode 節(jié)點,并修改其Title 屬性值。

轉(zhuǎn)自:http://www.cnblogs.com/xugang/archive/2010/12/01/1893260.html

示例下載:/Files/jhxk/Asp.net/SiteMap站點地圖.rar

轉(zhuǎn)載于:https://www.cnblogs.com/jhxk/articles/1894034.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的关于ASP.NET 中站点地图sitemap 的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。