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

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

using System.Web;
using System.Web.Mvc;

namespace MVCWeb.PresentationExtensions
{
    public static class HtmlHelperExtensions
    {
        public static HtmlString GetText(this HtmlHelper Html, string keyword)
        {
            // code to get the text based on the keyword
        }
    }
}

我在我的视图中使用@using MVCWeb.PresentationExtensions.在〜/ Views文件夹中,调用扩展方法非常有效.

我最近添加了一个区域.我在〜/ Areas / AreaName / Views文件夹中的View文件中使用扩展方法,代码正在编译,它确实有效,但是我在IDE中遇到错误.

每次我在Area视图中使用@ Html.GetText(“SomeKeyword”)时,错误列表中都会显示以下两个错误.

>’System.Web.WebPages.Html.HtmlHelper’不包含’GetText’的定义和最佳扩展方法重载’MVCWeb.PresenationExtension.HtmlHelperExtensions.GetText(System.Web.Mvc.HtmlHelper,string)’有一些无效参数
> Instance参数:无法从’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.

在〜/ Area / AreaName / Views中,@ HTML有以下注释:

HtmlHelper WebPage.Html
Gets the System.Web.WebPages.Html.HtmlHelper object that is associated with a page.

作为参考,〜/ Views和〜/ Areas / AreaName / Views中的Web.config文件匹配.这是.NET 4.5上的MVC4应用程序,尚未从以前版本的MVC转换.

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

最佳答案 它运行正常,因为您的web.config包含正确的引用,并且它在运行时正确匹配.

它只是一个区域的ide bug.要摆脱它,您可以使用@include将其指定为视图顶部的包含,这将为智能感知提供帮助.

点赞