【问题标题】:System.Web.Mvc.HtmlHelper does not contain a definition for MvcSiteMapSystem.Web.Mvc.HtmlHelper 不包含 MvcSiteMap 的定义
【发布时间】:2014-03-26 14:52:26
【问题描述】:
我正在将 MvcSiteMapProvider MVC5 与我的 Web 应用程序以及我正在使用的 _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
有人知道如何解决这个问题吗?
【问题讨论】:
标签:
c#
asp.net-mvc
mvcsitemapprovider
【解决方案1】:
@using MvcSiteMapProvider.Web.Html
通过将其添加到视图顶部来修复
@StevenV
【解决方案2】:
我认为您缺少 using 语句。尝试将@using MvcSiteMapProvider.Web.Html 添加到视图顶部。
如果您要经常使用它,请考虑将命名空间添加到 Views\Web.config 中 <system.web.webPages.razor> 下的 <namespaces> 部分。这将使它在该文件夹内的所有 Razor 视图中可用,而无需在每个单独的视图上使用 using 语句。
【解决方案3】:
@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 语句。
【解决方案4】:
您需要安装 MvcSiteMap Provider。
您可以使用以下命令从包管理器控制台执行此操作:
Install-Package MvcSiteMapProvider.MVC5
然后在剃须刀的顶部添加:
@using MvcSiteMapProvider