MvcSiteMapProvider - 修改节点 url
MvcSiteMapProvider - modify node url
我有一个分布式 mvc asp.net Web 应用程序。应用程序的 UI 分为不同的组件,每个组件都有不同的主机值,这意味着应用程序对 UI 的不同部分具有不同的 URL。有一个跨不同组件共享的 XML 站点地图文件。站点地图中的节点使用相对 URLs 和一个指示应该使用什么主机值的属性,主机值存储在配置文件中——这是因为应用程序存在于几个不同的环境中,因此硬编码站点地图中的完全限定 URL 不实用。
考虑到所有这些,当站点地图节点在某些导航 link 中呈现时,我必须修改节点的 URL 以使用正确的主机使其完全合格。我可以使用 .net SiteMapNode class.
轻松做到这一点
我的问题是我需要对 MvcSiteMapProvider 做一些类似的事情。到目前为止,我运气不佳。欢迎提出建议。
我正在尝试 here 中讨论的方法,即使用自定义 ISiteMapNodeUrlResolver。
默认实现已将主机名替换为 xml 站点地图文件中可选提供的 hostName 属性。在我的自定义实现中,我查找了基于 hostName 属性的配置设置,以根据配置设置进行运行时修改。
到目前为止,它似乎在按需工作。
我有一个分布式 mvc asp.net Web 应用程序。应用程序的 UI 分为不同的组件,每个组件都有不同的主机值,这意味着应用程序对 UI 的不同部分具有不同的 URL。有一个跨不同组件共享的 XML 站点地图文件。站点地图中的节点使用相对 URLs 和一个指示应该使用什么主机值的属性,主机值存储在配置文件中——这是因为应用程序存在于几个不同的环境中,因此硬编码站点地图中的完全限定 URL 不实用。
考虑到所有这些,当站点地图节点在某些导航 link 中呈现时,我必须修改节点的 URL 以使用正确的主机使其完全合格。我可以使用 .net SiteMapNode class.
轻松做到这一点我的问题是我需要对 MvcSiteMapProvider 做一些类似的事情。到目前为止,我运气不佳。欢迎提出建议。
我正在尝试 here 中讨论的方法,即使用自定义 ISiteMapNodeUrlResolver。
默认实现已将主机名替换为 xml 站点地图文件中可选提供的 hostName 属性。在我的自定义实现中,我查找了基于 hostName 属性的配置设置,以根据配置设置进行运行时修改。
到目前为止,它似乎在按需工作。