对具有多个路径的页面使用 ASP.NET SiteMap

发布于 2024-07-04 15:49:34 字数 638 浏览 6 评论 0原文

我有一个可以从三个不同页面访问的特定页面(我们将其称为“我的页面”)。 在 Web.sitemap 文件中,我尝试将此页面的 XML 填充到三个单独的节点下,如下所示

: 第1页>
  < 我的页面 / >
  ...
< /第1页>

< 第2页>
  < 我的页面 / >
  ...
< /第2页>

< 第3页>
  < 我的页面 / >
  ...
< /Page 3 >

这样做时,我收到以下错误:

找到具有相同 URL“Default.aspx”的多个节点。 XmlSiteMapProvider 要求站点地图节点具有唯一的 URL。

我在网上读到 SiteMapNodes 在内部存储为字典,这解释了为什么我不能使用相同的 URL。 无论如何,我只是在寻找替代方法来解决这个问题。 任何建议将不胜感激。

I have a certain page (we'll call it MyPage) that can be accessed from three different pages. In the Web.sitemap file, I tried to stuff the XML for this page under the three separate nodes like this:

< Page 1 >
  < MyPage / >
  ...
< /Page 1 >

< Page 2 >
  < MyPage / >
  ...
< /Page 2 >

< Page 3 >
  < MyPage / >
  ...
< /Page 3 >

In doing so I received the following error:

Multiple nodes with the same URL 'Default.aspx' were found.
XmlSiteMapProvider requires that sitemap nodes have unique URLs.

I read online that the SiteMapNodes are stored as a dictionary internally which explains why I can't use the same URL. In any case, I'm just looking for alternate ways to go about solving this problem. Any suggestions would be greatly appreciated.

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

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

发布评论

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

评论(4

七色彩虹 2024-07-11 15:49:34

这并不是 Web.sitemap 文件的真正预期目的。

来自 SiteMap 类的 MSDN 文档,

从根本上来说,站点地图
是一个层次结构的容器
SiteMapNode 对象的集合。
但是,SiteMap 不维护
节点之间的关系;
相反,它将其委托给站点
地图提供商。

因此,换句话来说,web.SiteMap 仅描述页面的层次结构,而不描述这些页面之间的关系。

但是,如果您的目的只是从其他页面链接“MyPage”,那么无论如何您都不需要将 MyPage 作为这些其他页面的子节点。

希望这有助于澄清一些事情。

That's not really the intended purpose of the Web.sitemap file.

From MSDN Docs of the SiteMap class,

Fundamentally, the SiteMap
is a container for a hierarchical
collection of SiteMapNode objects.
However, the SiteMap does not maintain
the relationships between the nodes;
rather, it delegates this to the site
map providers.

So, to paraphrase, the web.SiteMap only describes the hierarchy of the pages, and not the relationships between those pages.

However, if your intention is just to have the 'MyPage" linked from your other pages, then you don't need to have MyPage as child nodes of those other pages anyway.

Hope that helps clarify things a little.

甜嗑 2024-07-11 15:49:34

我知道您可以有两个不同的 ~/folder/index.aspx 和 ~/folder/ 条目都指向同一个地方。 是的,有点黑客行为,但也许有一种方法可以更进一步?

  • 〜/文件夹/index.aspx
  • 〜/文件夹/
  • 〜/文件夹

I know you can have two different entries of ~/folder/index.aspx and ~/folder/ both point to the same place. A bit of a hack, yes, but maybe there's a way you can take this further?

  • ~/folder/index.aspx
  • ~/folder/
  • ~/folder
半边脸i 2024-07-11 15:49:34

你可以尝试这个......

<siteMapNode url="ListAll.aspx">
  <siteMapNode url ="Detail.aspx?node=all" />
</siteMapNode>
<siteMapNode url="ListMine.aspx">
  <siteMapNode url ="Detail.aspx?node=mine" />
</siteMapNode>

但是如果你尝试转到“Detail.aspx?node=all&id=13”(我仍在尝试解决这个问题),它就会崩溃。)

You could try this...

<siteMapNode url="ListAll.aspx">
  <siteMapNode url ="Detail.aspx?node=all" />
</siteMapNode>
<siteMapNode url="ListMine.aspx">
  <siteMapNode url ="Detail.aspx?node=mine" />
</siteMapNode>

But it breaks if you try to go to "Detail.aspx?node=all&id=13" (Which I'm still trying solve.)

沧桑㈠ 2024-07-11 15:49:34

一种简单但有效的方法是使用不同的查询字符串进行区分:

  • default.aspx?page=1
  • default.aspx?page=2
  • default.aspx?page=3

尽管它们都指向,但它们在站点地图中都是不同的同一页面。

One simple but effective way is to differentiate by using a different query string:

  • default.aspx?page=1
  • default.aspx?page=2
  • default.aspx?page=3

They're all different in a sitemap, though they all point to the same page.

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