使用asp.net MVCSiteMapProvider V4与2网站地图 [英] Using asp.net MVCSiteMapProvider v4 with 2 sitemap

查看:287
本文介绍了使用asp.net MVCSiteMapProvider V4与2网站地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我想用asp.net MVCSiteMapProvider V4与2个不同的站点地图,一个用于主站点,一个用于管理区。我已经做了一些搜索,我发现,你需要插入在web.config中:

Hi I would like to use asp.net MVCSiteMapProvider v4 with 2 different sitemaps, one for the main site and one for the admin area. I have done some search and I have found that you need insert it on web.config:

 <siteMap defaultProvider="AppSiteMapProvider" enabled="true">
  <providers>
    <clear />
    <add name="AppSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider,
    MvcSiteMapProvider" siteMapFile="~/Mvc2.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="AdminSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider,
    MvcSiteMapProvider" siteMapFile="~/Areas/Admin/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" />
  </providers>
</siteMap>

,然后用

@Html.MvcSiteMap("AdminSiteMapProvider").Menu()

但它不工作。
是有同样的问题,有人???????
顺便说一句错误的是:

But it is not working. Is someone having the same problem??????? Btw the error is:

Could not find file 'P:\MVCTest\MvcSite1\MvcSite1\Mvc.sitemap'. 

这就像他们只是忽略了的web.config

It is like they are just ignoring the web.config

推荐答案

这些设置的使用V4时忽略。 MvcSiteMapProvider不再使用微软的站点地图提供者模型和&LT;网站导航方式&gt; 部分可以从web.config中完全删除

These settings are ignored when using v4. MvcSiteMapProvider no longer uses Microsoft's sitemap provider model and the <siteMap> section can be removed from the web.config entirely.

要处理一个应用程序的2的Sitemaps要求,您将需要使用依赖注入容器,并实现1或2定制类传入的HTTP请求到一个特定的网站地图的实例映射。

To handle your requirement of 2 sitemaps in one application, you will need to use a dependency injection container and implement 1 or 2 custom classes to map incoming HTTP requests to a specific SiteMap instance.

的DI部分可以通过安装MvcSiteMapProvider.MVC之一[X] .DI。[容器名称]包进行处理。

The DI part can be handled by installing one of the MvcSiteMapProvider.MVC[x].DI.[ContainerName] packages.

ISiteMapCacheKeyGenerator提供基于HTTP请求中的当前网站地图的名称,和ISiteMapCacheKeyToBuilderSetMapper告诉MvcSiteMapProvider使用哪个助洗剂(其可配置为XML文件或其它来源)。

ISiteMapCacheKeyGenerator provides the name of the "current" SiteMap based on the HTTP request, and ISiteMapCacheKeyToBuilderSetMapper tells MvcSiteMapProvider which builder to use (which can be configured for an XML file or other source).

请参阅多个站点地图中的一个应用程序如何可以做到这一点完整的例子。

See Multiple SiteMaps in One Application for a complete example of how this can be done.

这篇关于使用asp.net MVCSiteMapProvider V4与2网站地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆