3

MVC3サイトでMVCSiteMapProviderを使用していますが、最近、mvc.sitemapのノードにメタキーワードと説明を追加しました

<mvcSiteMapNode controller = "Home" action = "Index" title = "Home" description = ""keywords = "ホームページ、ホームページ、ようこそ">

... 例えば。

次に、私のビューは次のようにデータを入力します。

@ {string title = ""; 文字列キーワード=""; 文字列の説明="";

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

}

<title >> @ title </ title >>

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

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

私が使用するすべてのページで:

@ Html.MvcSiteMap()。Menu(0、true、true、1)

キーワードセクションにコンテンツを入れ始めて以来、メニューのリンクは次のように表示されます。

<ahref="/?keywords=home%20%2C%20Home%20Page%2C%20welcome">ホーム</a>

なぜこれが現れたのかわからないので、そこにないようにしたいと思います。誰かアイデアはありますか?

4

1 に答える 1

3

これは、文書化されていない MvcSiteMapProvider 機能を知っている限りです。ノード上のすべての不明な属性は、RouteValues のデフォルトとして挿入されます。キーワード属性を無視するには、web.config でサイトマップ設定を編集し、attributeToIgnore に「keyword」を追加します。デフォルトの挿入構成を使用している場合、MvcSiteMapProvider には既に attributesToIgnore が定義されている必要があります。以下は、attributeToIgnore にキーワードが追加されたデフォルト設定です。

<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 に答える