为 ASP.NET 网站创建 web.sitemap 文件

发布于 2024-12-18 07:53:19 字数 426 浏览 2 评论 0原文

我正在尝试使用 SiteMapPath 控件在 Visual Studio ASP C# 站点上实现面包屑功能。

我工作的公司继承了该网站,我们主要是 PHP 开发人员,所以请原谅我的无知。

最初,当我从工具箱中放入 SiteMapPath 时,我收到一条错误消息,指出找不到 web.sitemap 文件。然后我使用一个据称可以为 ASP 站点完成工作的应用程序创建了一个。

我们现在收到的错误消息告诉我们,不允许在 xml 结构中两次使用相同的 URL。这看起来很荒谬,因为许多页面都有相同的链接。

一些研究告诉我在 xml 中为每个 URL 附加一个唯一的虚拟无用请求字符串。这似乎也有点荒谬,而且是一次彻底的黑客攻击——尤其是对于一个可能包含数百个重复网址的网站。

任何人都可以阐明这一点,甚至可能是一种完全不同的方法吗?

非常感谢!

I'm trying to implement breadcrumb functionality on a visual studio ASP C# site using the SiteMapPath Control.

The company I work for has inherited the site and we're primarily PHP developers so forgive the ignorance.

Originally when I dropped in the SiteMapPath from the tool box I got an error message saying there was no web.sitemap file found. I then created one using an application that supposedly does the job for ASP sites.

The error message we get now tells us that your not allowed to have the same URL twice in the xml structure. This seems pretty ridiculous as many pages will have the same links.

Some research has told me to append each of the URLs with a unique virtual useless requeststring in the xml. This also seems a bit ridculous, and a total hack - especially with a site containing potentially hundreds of urls repeated.

Can anyone shed a little light on this, or maybe even a totally different approach??

Thanks so much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

葬﹪忆之殇 2024-12-25 07:53:19

基本上,默认站点地图提供程序 (System.Web.XmlSiteMapProvider) 要求所有 URL 都是唯一的,因此它可以通过属性 SiteMap.CurrentNode 轻松解析当前选定的节点>。

这有点令人沮丧,这导致人们像您所指出的那样添加虚假的查询字符串。对于只有几个重复的简单情况,这通常是可以接受的。

不过,您可以实现自己的站点地图提供程序,请参阅实现 ASP.NET 站点地图MSDN 上的提供程序。通过这样做,您可以拥有自己的逻辑来处理站点地图文件,并获得您想要的行为。

在这种情况下,自定义站点地图提供程序可能是最干净的方法。

Basically, the default site map provider (System.Web.XmlSiteMapProvider) requires all URLs to be unique, so it can easily resolve the currently selected node, with the property SiteMap.CurrentNode.

This is a bit frustrating, which results in people tacking on bogus query strings like you've noted. For the simple case with only a few dups, this is usually acceptable.

You can however, implement your own site map provider, see Implementing ASP.NET Site-Map Providers on MSDN. By doing this, you can have your own logic that processes your sitemap file, and get the behavior you want.

A custom sitemap provider would probably be the cleanest approach in this case.

孤独难免 2024-12-25 07:53:19

“我们现在收到的错误消息告诉我们,不允许在 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>

"The error message we get now tells us that your not allowed to have the same URL twice in the xml structure. This seems pretty ridiculous as many pages will have the same links."

I think there's a bit of confusion: Pages having the same links is irrelevant - web.sitemap is just an XML map of page locations. The file doesn't record page cross-linking. But, you can nest things as such if they have identical names:

<?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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文