3

我在我的 MVC3 站点中使用 MVCSiteMapProvider,并且我最近在 mvc.sitemap 中的节点中添加了元关键字和描述

< mvcSiteMapNode controller="Home" action="Index" title="Home" description=""keywords="home, home page, 欢迎" >

... 例如。

然后我的视图像这样填充它:

@{ 字符串标题 = ""; 字符串关键字 = ""; 字符串描述 = "";

  if (SiteMap.CurrentNode != null)
  {
      title = SiteMap.CurrentNode["title"];
      keywords = SiteMap.CurrentNode["keywords"];
      description = SiteMap.CurrentNode["description"];
  }

}

<标题>>@标题</标题>>

<meta name="keywords" content="@keywords" />

<meta name="description" content="@description" />

在我使用的所有页面上:

@Html.MvcSiteMap().Menu(0, true, true, 1)

自从我开始将内容放入关键字部分以来,菜单中的链接填充如下:

<a href="/?keywords=home%20%2C%20Home%20Page%2C%20welcome" >首页</a>

我不确定为什么会出现这种情况,我希望它不存在。有人有想法么?

4

1 回答 1

3

据我所知,这是一个未记录的 MvcSiteMapProvider 功能。节点上的所有未知属性都作为 RouteValues 默认值插入。要忽略关键字属性,请在 web.config 中编辑站点地图设置并将“关键字”添加到 attributesToIgnore。如果您使用的是默认插入配置,则 MvcSiteMapProvider 应该已经定义了 attributesToIgnore。以下是添加到属性ToIgnore 的关键字的默认设置:

<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
  <providers>
    <clear/>
    <add name="MvcSiteMapProvider"
      type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
      siteMapFile="~/Mvc.Sitemap"
      securityTrimmingEnabled="true"
      cacheDuration="5"
      enableLocalization="true"
      scanAssembliesForSiteMapNodes="true"
      excludeAssembliesForScan=""
      includeAssembliesForScan=""
      <!-- Added keywords -->
      attributesToIgnore="bling,visibility,keywords"
      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>
于 2012-04-12T09:59:31.923 回答