派生自 XMLSiteMapProvider 的自定义 SiteMapProvider :如何直接在 BuildSiteMap() 中加载 xml 文档

发布于 2024-07-25 19:28:24 字数 330 浏览 7 评论 0原文

我们需要为每个登录用户加载不同的 XML 站点地图。该站点地图可以来自各种来源(Web 服务、数据库、文件),并且必须在运行时加载。

我是这样设计的:当用户登录时,会获取该用户的自定义 XML 并将其放入 Session 中。 在我的自定义 SiteMapProvider 的 BuildSiteMap() 方法中,我需要加载 XML 作为站点地图。 我知道如何逐个节点地执行此操作,但我的问题是:如果 XMLSiteMapProvider 可以从 XML 文件加载站点地图数据,我可以使其从内存中的站点地图文件执行相同的操作(通过将 XML 转换为站点地图 XML) ?

非常感谢任何评论,谢谢。

We have a requirement to load a different XML sitemap for each user that logs in. This sitemap can come from a variety of sources (webservice, database, file) and has to be loaded at runtime.

I have designed it thus: When a user logs in, the custom XML for that user is fetched and put into Session. In the BuildSiteMap() method of my custom SiteMapProvider, I need to load the XML as the sitemap. I know how to do this node-by-node, but my question is this: If XMLSiteMapProvider can load the sitemap data from an XML file, can I make it do the same from an in-memory sitemap file (by transforming my XML to sitemap XML) ?

Will appreciate any comments, thanks.

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

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

发布评论

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

评论(2

因为看清所以看轻 2024-08-01 19:28:24

虽然技术上应该是可行的,但我认为这不是一个好的方法,因为它与包含完整站点导航并通过为每个节点指定用户/组来处理授权的站点地图的想法相矛盾。

<?xml version="1.0" encoding="utf-8" ?>
  <siteMap>
    <!-- other <siteMapNode> elements -->
      <siteMapNode title="Support" 
       description="Support" 
       url="~/Customers/Support.aspx" 
       roles="Customers" />
  </siteMap>

While it should technically be possible, i don't think this would be good approach because it contradicts the idea of a sitemap containing a complete site navigation and handling authorization by specifying users/groups for each node.

<?xml version="1.0" encoding="utf-8" ?>
  <siteMap>
    <!-- other <siteMapNode> elements -->
      <siteMapNode title="Support" 
       description="Support" 
       url="~/Customers/Support.aspx" 
       roles="Customers" />
  </siteMap>
心凉怎暖 2024-08-01 19:28:24

您可以在 siteMapNode 中提供 siteMapFile 属性。 也许这可以进一步帮助您?

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
  <siteMapNode siteMapFile="~/users/xxx.sitemap" />
</siteMap>

You can provide a siteMapFile attribute in a siteMapNode. Maybe this can help you further?

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
  <siteMapNode siteMapFile="~/users/xxx.sitemap" />
</siteMap>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文