我在我的网络应用程序中使用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
有谁知道如何解决这个问题?
答案 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