我有一个 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
        }
    }
}

我在我的 View 中使用 @using MVCWeb.PresentationExtensions。在 ~/Views 文件夹中,调用扩展方法工作正常。

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

每次我在 Area View 中使用 @Html.GetText("SomeKeyword") 时,错误列表中都会显示以下两个错误。
  • 'System.Web.WebPages.Html.HtmlHelper' 不包含 'GetText' 的定义和最佳扩展方法重载 'MVCWeb.PresenationExtension.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.
    

    在 ~/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 在常规 View 与区域 View 中被定义为不同类型是否正常?
  • 如果 IDE 显示错误,为什么编译和运行正确?这是IDE错误吗?
  • 如何阻止这些错误显示在 IDE 中?
  • 最佳答案

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

    这只是区域的 ide 错误。要摆脱它,您可以使用 @include 将其指定为 View 顶部的包含,这将为智能感知提供帮助。

    关于c# - 在区域内的 View 中使用 MVC HtmlHelper 扩展方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14942878/

    10-11 23:51