[英]Creating a web.sitemap file for a ASP.NET website
我正在嘗試使用SiteMapPath控件在visual studio ASP C#站點上實現breadcrumb功能。
我工作的公司繼承了該網站,我們主要是PHP開發人員,所以請原諒無知。
最初當我從工具箱中刪除SiteMapPath時,我收到一條錯誤消息,說沒有找到web.sitemap文件。 然后我使用一個應該為ASP站點完成工作的應用程序創建了一個。
我們現在得到的錯誤消息告訴我們,您不允許在xml結構中兩次使用相同的URL。 這似乎很荒謬,因為許多頁面都有相同的鏈接。
一些研究告訴我在xml中附加每個URL都有一個唯一的虛擬無用請求字符串。 這似乎有點荒謬,並且完全破解 - 尤其是一個包含可能數百個網址重復的網站。
任何人都可以對此有所了解,或者甚至是一種完全不同的方法?
非常感謝!
基本上,默認站點地圖提供程序( System.Web.XmlSiteMapProvider
)要求所有URL都是唯一的,因此它可以使用屬性SiteMap.CurrentNode
輕松解析當前選定的節點。
這有點令人沮喪,這導致人們像你所注意到的那樣偽造查詢字符串。 對於只有少量重復的簡單情況,這通常是可以接受的。
但是,您可以實現自己的站點地圖提供程序,請參閱在MSDN上實現ASP.NET站點地圖提供程序 。 通過這樣做,您可以擁有自己的邏輯來處理站點地圖文件,並獲得所需的行為。
在這種情況下,自定義站點地圖提供程序可能是最干凈的方法。
“我們現在得到的錯誤消息告訴我們,你不允許在xml結構中有兩次相同的URL。這看起來很荒謬,因為許多頁面都有相同的鏈接。”
我認為存在一些混淆:具有相同鏈接的頁面無關緊要 - web.sitemap只是頁面位置的XML映射。 該文件不記錄頁面交叉鏈接。 但是,如果它們具有相同的名稱,您可以將其嵌套:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="/" title="Home">
<siteMapNode url="/subdir" title="Subdir">
<siteMapNode url="/subdir/page.aspx" title="Nested Page" />
</sitemapNode>
<siteMapNode url="/page.aspx" title="Root Page" />
</siteMapNode>
</siteMap>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.