更新站点地图结点:尽管下面的所有文字,问题是相当小 - 在地图的配置参数includeAssembliesForScan错误的程序集名称。它不应该包含“.dll”部分。ASP.NET MVC网站地图提供商不会产生从属性
我有MvcSiteMapProvider v.3.2.2.0。
如描述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认为它将在Area内导致Url生成错误的原因。 – hydr 2012-05-04 14:51:17
我有相同的名称空间名称和程序集名称。但是mvcSiteMapNode标题的资源位于Resources命名空间中(实际上它是App_GlobalResources项目文件夹)。 – user808128 2012-05-16 12:09:10
我的ASP.NET MVC应用程序中没有区域。 – user808128 2012-05-16 12:15:18