Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在区域内的视图中使用MVC HtmlHelper扩展方法_C#_Asp.net Mvc 4_Extension Methods_Html Helper_Asp.net Mvc Areas - Fatal编程技术网

C# 在区域内的视图中使用MVC HtmlHelper扩展方法

C# 在区域内的视图中使用MVC HtmlHelper扩展方法,c#,asp.net-mvc-4,extension-methods,html-helper,asp.net-mvc-areas,C#,Asp.net Mvc 4,Extension Methods,Html Helper,Asp.net Mvc Areas,我有一个HtmlHelper扩展方法,可以从数据库缓存中提取本地化文本。代码是这样的。(MVCWeb是我的MVC应用程序的名称空间。) 我正在视图中使用MVCWeb.PresentationExtensions。在~/Views文件夹中,调用扩展方法非常有效 我最近添加了一个区域。我在~/Areas/AreaName/Views文件夹中的视图文件中使用扩展名方法,代码正在编译,它确实可以工作,但是我在IDE中遇到了错误 每次在区域视图中使用@Html.GetText(“some关键字”)时,错误

我有一个HtmlHelper扩展方法,可以从数据库缓存中提取本地化文本。代码是这样的。(MVCWeb是我的MVC应用程序的名称空间。)

我正在视图中使用MVCWeb.PresentationExtensions
。在~/Views文件夹中,调用扩展方法非常有效

我最近添加了一个区域。我在~/Areas/AreaName/Views文件夹中的视图文件中使用扩展名方法,代码正在编译,它确实可以工作,但是我在IDE中遇到了错误

每次在区域视图中使用
@Html.GetText(“some关键字”)
时,错误列表中会显示以下两个错误

  • “System.Web.WebPages.Html.HtmlHelper”不包含“GetText”的定义,并且最佳扩展方法重载“MVCWeb.PresentationExtension.HtmlHelperExtensions.GetText(System.Web.Mvc.HtmlHelper,string)”具有一些无效参数
  • 实例参数:无法从“System.Web.WebPages.Html.HtmlHelper”转换为“System.Web.Mvc.HtmlHelper”
我发现在~/Views中,@Html有以下代码注释:

HtmlHelper<dynamic> WebViewPage<dynamic>.Html 
Gets or sets the System.Web.Mvc.HtmlHelper object that is used to render HTML elements.
HtmlHelper WebPage.Html
Gets the System.Web.WebPages.Html.HtmlHelper object that is associated with a page.
作为参考,我的Web.config文件在~/Views和~/Areas/AreaName/Views中匹配。这是.NET 4.5上的MVC4应用程序,尚未从以前的MVC版本转换而来

  • 在常规视图和区域视图中,@Html被定义为不同的类型,这正常吗
  • 如果IDE显示错误,为什么编译和运行会正确?这是一个IDE错误吗
  • 如何阻止这些错误显示在IDE中

它运行良好,因为您的web.config包含正确的引用,并且在运行时匹配正确


这只是一个ide领域的bug。要摆脱它,您可以使用@include将其指定为视图顶部的include,这将为intellisense提供帮助。

我刚刚遇到同样的问题,试图将MvcSiteMap帮助器添加到区域中的视图中

问题是NuGet包在根和视图级别将其名称空间添加到Web.Config文件中,但毫不奇怪,它不够聪明,无法查找埋在Areas/area_name/Views文件夹中的名称空间。解决方案只是添加名称空间,例如

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="FarmingtonCo.CacPortalWeb" />
    <add namespace="MvcSiteMapProvider.Web.Html" />
    <add namespace="MvcSiteMapProvider.Web.Html.Models" />
  </namespaces>
</pages>

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="FarmingtonCo.CacPortalWeb" />
    <add namespace="MvcSiteMapProvider.Web.Html" />
    <add namespace="MvcSiteMapProvider.Web.Html.Models" />
  </namespaces>
</pages>