我正在使用MVC3剃刀视图。 MvcSitemapProvider dll版本3.1.0.0
当我在我的razorview中使用此@Html.MvcSiteMap().SiteMap()
时,收到以下错误消息
Method not found: 'Void System.Web.Mvc.WebFormView..ctor(System.String, System.String)'.
我已注册名称空间:
<add namespace="MvcSiteMapProvider.Web.Html" />
<add namespace="MvcSiteMapProvider.Web.Html.Models" />
在两个web.config文件中(root和视图web.config)。
还有什么我需要看的吗?
答案 0 :(得分:0)
您是否已将MvcSitemapProvider.dll添加为您尝试在其中使用的项目中的参考?
我假设你没有两个步骤:
修改强>:
正如您所提到的那样,dll是物理渲染的,仔细检查后,您对web.config的设置可能会稍微偏离。这里的参考是Setup Guide。
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="MvcSiteMapProvider"
type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
/>
</providers>
</siteMap>
您似乎在web.config
中只有registered the html helper个答案 1 :(得分:0)
你的root web.config应该在页面名称空间节点中有这个。
<add namespace="MvcSiteMapProvider.Web.Html" />
还有..
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="MvcSiteMapProvider"
type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
siteMapFile="~/Site.sitemap" <!-- This can be changed depending on your .sitemap file -->
securityTrimmingEnabled="true"
cacheDuration="5"
enableLocalization="true"
scanAssembliesForSiteMapNodes="true"
skipAssemblyScanOn=""
attributesToIgnore="bling"
nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider"
controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider"
actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider"
aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider"
siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider"
siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" />
</providers>
</siteMap>
在您的视图中,web.config,
<add namespace="MvcSiteMapProvider.Web.Html" />
<add namespace="MvcSiteMapProvider.Web.Html.Models" />
确保您拥有here的最新版MVC SiteMap。
希望这有帮助!
答案 2 :(得分:0)
我可以通过添加DisplayTemplates来解决这个问题。如何显示模型。
例如:
@model SiteMapNodeModel
@if (Model.IsCurrentNode && Model.SourceMetadata["HtmlHelper"].ToString() != "MvcSiteMapProvider.Web.Html.MenuHelper") {
<text>@Model.Title</text>
} else if (Model.IsClickable) {
<a href="@Model.Url" class="@(Model.IsCurrentNode ? "selected" : string.Empty)" >@Model.Title</a>
}
else
{
<text>@Model.Title</text>
}