UPDATEからサイトマップノードを生成しません:以下のすべてのテキストにもかかわらず、問題はかなり小さかった - サイトマップの構成でincludeAssembliesForScanパラメータで間違ったアセンブリ名。 「.dll」部分は含めないでください。ASP.NET MVCサイトマッププロバイダは属性
私には、3.2.2.0のMvcSiteMapProviderがあります。
hereと同じように、属性を使用してコード内にサイトマップノードを定義します。しかし、属性付きアクションはノードとして生成されません。サイトマップに明示的に定義されたノードのみが生成されます。
私のコードです:
サイトマップ:
<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0"
xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0 MvcSiteMapSchema.xsd"
enableLocalization="true">
<mvcSiteMapNode
title="$resources:Mvc.sitemap,MainMenuTop_Main"
controller="Home"
action="Index"
key="Home">
<mvcSiteMapNode
title="$resources:Mvc.sitemap,Account"
controller="Account"
action="LogOn"
clickable="false"
key="Account" />
</mvcSiteMapNode>
</mvcSiteMap>
ホームコントローラ:
[HttpGet]
[MvcSiteMapProvider.MvcSiteMapNode(
ParentKey = "Home",
Title = "$resources:Mvc.sitemap,MainMenuTop_About")]
public ActionResult About()
{
return View();
}
アカウントコントローラ:
[HttpGet]
[MvcSiteMapProvider.MvcSiteMapNode(
ParentKey = "Account",
Title = "$resources:Mvc.sitemap,Register")]
public ActionResult Register()
{
return View();
}
ので、これら二つの動作はしませんサイトマップのノードになります。つまり、MvcSiteMapNodeAttribute属性が機能しませんでした。どうして?
web.configファイルのマイマップの一部:。
<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"
includeAssembliesForScan="Site2.dll"
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>
私は同様の問題を抱えていました。標準名前空間とアセンブリ名がどのように見えるか教えてください。 私のアプリケーションでは一致しなかったため、MvcSiteMapが誤ったURL生成を引き起こしたエリア内にあると思うのはその理由でした。 – hydr
私は同じ名前空間名とアセンブリ名を持っています。しかし、mvcSiteMapNodeタイトルのリソースはResources名前空間にあります(実際はApp_GlobalResourcesプロジェクトフォルダです)。 – user808128
そして、私はASP.NET MVCアプリケーションに領域がありません。 – user808128