簡體   English   中英

為ASP.NET網站創建web.sitemap文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM