2

我正在使用 MVC3 剃须刀视图。MvcSitemapProvider dll 版本 3.1.0.0

当我@Html.MvcSiteMap().SiteMap()在我的 razorview 中使用它时,我收到以下错误消息

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 文件(根以及视图 web.config)中。

还有什么我需要看的吗?

4

3 回答 3

0

您是否在尝试使用它的项目中添加了 MvcSitemapProvider.dll 作为参考?

我假设你没有作为它的两部分步骤:

  1. 将 dll 添加为程序集引用
  2. 在您的 web.config 中注册提供程序

编辑

正如您提到的 dll 是物理渲染的,经过仔细检查,您的 web.config 设置可能有点偏差。此处为参考设置指南

<siteMap defaultProvider="MvcSiteMapProvider" enabled="true"> 
  <providers> 
    <clear /> 
    <add name="MvcSiteMapProvider" 
         type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
         /> 
  </providers> 
</siteMap>

看来您只在 web.config 中注册了 html helper

于 2012-02-15T21:15:53.623 回答
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>
}
于 2014-02-25T18:05:59.343 回答
0

您的根 web.config 应该在 pages, namespaces 节点中有这个。

      <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" />

确保您从这里获得了最新版本的 MVC SiteMap 。

希望这可以帮助!

于 2012-10-29T20:50:21.197 回答