【发布时间】:2012-04-25 07:18:06
【问题描述】:
更新: 尽管有以下所有文本,但问题相当小 - 站点地图配置中的 includeAssembliesForScan 参数中的程序集名称错误。它不应包含“.dll”部分。
我有 v. 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 生成的原因。
-
我有相同的命名空间名称和程序集名称。但是 mvcSiteMapNode 标题的资源位于 Resources 命名空间中(实际上是 App_GlobalResources 项目文件夹)。
-
我的 ASP.NET MVC 应用程序中没有区域。
-
如果我创建一个区域并将我以前的所有站点内容放入其中,然后在所有 MVC SiteMap 提供程序部分(站点地图、操作属性等)中指示此区域名称,是否会有所帮助? .. 但我认为仅仅让 MVC SiteMap 提供程序工作太复杂了。
标签: asp.net-mvc nodes mvcsitemapprovider