System.Web.Mvc.HtmlHelper不包含MvcSiteMap的定义

时间:2014-03-26 14:52:27

标签: c# asp.net-mvc mvcsitemapprovider

我在我的网络应用程序中使用MvcSiteMapProvider MVC5,并在我使用的_Layout.cshtml文件中:

@if (Html.MvcSiteMap().SiteMap.CurrentNode != Html.MvcSiteMap().SiteMap.RootNode)
    {
        @Html.MvcSiteMap().SiteMapPath()
    }

但是Intellisence正在抛出这个错误:

System.Web.Mvc.HtmlHelper does not contain a definition for MvcSiteMap

有谁知道如何解决这个问题?

4 个答案:

答案 0 :(得分:12)

@using MvcSiteMapProvider.Web.Html

通过将其添加到视图顶部来修复,如

所述

@StevenV

答案 1 :(得分:4)

我认为你错过了一个使用声明。尝试将@using MvcSiteMapProvider.Web.Html添加到视图顶部。

如果您要经常使用它,请考虑将名称空间添加到Views \ Web.config中<namespaces>下的<system.web.webPages.razor>部分。这将使其在该文件夹中的所有Razor视图中可用,而无需在每个视图上使用using语句。

答案 2 :(得分:4)

@Steven V提到的命名空间在安装NuGet包期间会自动添加到Views\Web.config文件中。

<configuration>
  <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="MvcSiteMapProvider.Web.Html" />
        <add namespace="MvcSiteMapProvider.Web.Html.Models" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
</configuration>

但是,Visual Studio intellisense需要在拾取项目之前重新编译项目。无需在视图中添加@using MvcSiteMapProvider.Web.Html语句。

答案 3 :(得分:0)

您需要安装MvcSiteMap Provider。

您可以使用以下命令从Package Manger控制台执行此操作:

Install-Package MvcSiteMapProvider.MVC5

然后在剃刀顶部添加:

@using MvcSiteMapProvider