MVC 5,应用程序中的两个SiteMap提供程序

时间:2015-06-25 19:56:44

标签: asp.net-mvc asp.net-mvc-5 mvcsitemapprovider

在mvc 5应用中有两个站点地图,但只有默认(mvc.sitemap)正常,在web.config中添加了新的提供程序。

尝试使用新的默认设置,但仍然是应用程序正在拾取默认设置,如果我完全删除该文件,则会显示错误(在视图中我已从站点地图重新检索页面标题,因此Pagetitle属性显示错误,因为没有站点地图)? 有什么建议?

未检测到客户SiteMap

 <providers>
    <clear />
    <add name="MvcSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" siteMapFile="~/Mvc.Sitemap" securityTrimmingEnabled="true" cacheDuration="5" enableLocalization="true" scanAssembliesForSiteMapNodes="true" includeAssembliesForScan="" excludeAssembliesForScan="" attributesToIgnore="visibility" nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider" controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider" actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider" siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider" siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
    <add name="CustomerSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" siteMapFile="~/Customer.Sitemap" securityTrimmingEnabled="true" cacheDuration="5" enableLocalization="true" scanAssembliesForSiteMapNodes="true" includeAssembliesForScan="" excludeAssembliesForScan="" attributesToIgnore="visibility" nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider" controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider" actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider" siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider" siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
  </providers>

1 个答案:

答案 0 :(得分:1)

您在上面显示的配置适用于MvcSiteMapProvider v3,但v3与MVC 5不兼容。

MvcSiteMapProvider v4不是基于Microsoft的SiteMapProvider模型,并且根本不需要NuGet软件包安装的任何配置。您应该按照upgrading from v3 to v4中的说明从web.config中完全删除<providers>部分,然后阅读configuration documentation

对于使用多个SiteMap,这是一个高级方案,需要外部DI容器才能执行,并且过程为outlined here

如果您尚未在应用程序中使用DI,则升级到外部DI就像安装其中一个MvcSiteMapProvider.MVC5.DI.<Container Name> NuGet软件包一样简单。如果您在应用程序中使用DI,则需要安装其中一个MvcSiteMapProvider.MVC5.DI.<Container Name>.Modules,然后按照随其安装的自述文件中的配置说明进行操作。

请注意,使用多个SiteMaps有许多更简单的替代方法,以便将节点分成可同时显示的不同组。