MVC3 MvcSiteMap()

发布于 2025-01-06 03:46:06 字数 468 浏览 0 评论 0原文

我正在使用 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)。

还有什么我需要看的吗?

I am using MVC3 razor view. MvcSitemapProvider dll version 3.1.0.0

When I use this @Html.MvcSiteMap().SiteMap() in my razorview , I get the following error message

Method not found: 'Void System.Web.Mvc.WebFormView..ctor(System.String, System.String)'.

I have registered the namespace for:

<add namespace="MvcSiteMapProvider.Web.Html" />
<add namespace="MvcSiteMapProvider.Web.Html.Models" />

In both of the web.config files (root as well as the view web.config).

Is there anything else I need to look at?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

稳稳的幸福 2025-01-13 03:46:06

您是否已将 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 助手

Have you added the MvcSitemapProvider.dll as reference within the project you are attempting to use it within?

I'm assuming you have not as its a two part step:

  1. Add the dll as an Assembly Reference
  2. Register the provider in your web.config

Edit:

As you mentioned that the dll is physically rendered, upon closer examination your setup of the web.config may be a little off. For reference here is the Setup Guide.

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

It seems that you have only registered the html helpers within the web.config

╰沐子 2025-01-13 03:46:06

您的根 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" />

确保您拥有此处的最新版本的MVC SiteMap 。

希望这有帮助!

Your root web.config should have this in the pages, namespaces node.

      <add namespace="MvcSiteMapProvider.Web.Html" />

and also..

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

And in your view web.config,

    <add namespace="MvcSiteMapProvider.Web.Html" />
    <add namespace="MvcSiteMapProvider.Web.Html.Models" />

Make sure you have the newest version of MVC SiteMap from here.

Hope this helps!

世俗缘 2025-01-13 03:46:06

我可以通过添加 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>
}

I could fix this problem by adding the DisplayTemplates. How the models had to be displayed.

ex.:

@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>
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文