2014-03-26 35 views
4

的定义,我使用MvcSiteMapProvider MVC5与我的web应用程序和我_Layout.cshtml文件里我使用:System.Web.Mvc.HtmlHelper不包含MvcSiteMap

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

但Intellisence抛出此错误:

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

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

+0

@StevenV Ofcourse修复​​了错误。 – user667430

回答

10
@using MvcSiteMapProvider.Web.Html 

@StevenV

+0

太棒了!解决了这个问题:) – sebastian

3

我认为你缺少using声明中说固定加入这个到视图的顶部。尝试将@using MvcSiteMapProvider.Web.Html添加到视图的顶部。

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

0

您需要安装MvcSiteMap提供程序。

您可以从包管理器控制台使用以下命令做到这一点:

Install-Package MvcSiteMapProvider.MVC5 

然后在剃刀加顶:

@using MvcSiteMapProvider 
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智能感知需要重新编译该项目才能将其拾取。没有必要在视图中添加@using MvcSiteMapProvider.Web.Html声明。