【问题标题】:Why are extensions not available in @helper?为什么@helper 中没有扩展?
【发布时间】:2015-05-24 13:52:08
【问题描述】:

我创建了一个这样的视图扩展:

namespace MyProject
{
    public static class PageExtensions
    {
        public static HtmlString MyExt(this WebViewPage page)
        {

所以我现在可以输入 Razor 视图:

@this.MyExt()

请注意,我的视图都包含通过 Web.config 声明的命名空间:

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyProject" />

一切都很好。现在我想写一个@helper 函数并在那里使用我的扩展:

@helper MyHelper() {
    var page = (WebViewPage) CurrentPage;
    <div>
        @page.MyExt()
    </div>
}

但该扩展程序在那里不可用。我得到的错误是:

编译器错误消息:CS1061:'System.Web.Mvc.WebViewPage' 没有 包含“MyExt”的定义并且没有扩展方法 'MyExt' 接受类型的第一个参数 可以找到“System.Web.Mvc.WebViewPage”(您是否缺少使用 指令还是程序集引用?)

我错过了什么?

【问题讨论】:

  • what am I missing? 可能是程序集引用或 using 指令?

标签: c# asp.net-mvc razor extension-methods


【解决方案1】:

确保您修改的 web.config 是“/Views/Web.Config”

【讨论】:

    【解决方案2】:

    Visual Studio 需要重新编译项目才能识别您添加到视图中的帮助程序,我怀疑这是您的问题。

    【讨论】:

      【解决方案3】:

      问题在于命名空间。删除包含 PageExtensions 类的命名空间指令修复了它。为什么会这样?我不确定

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        • 2011-11-16
        • 1970-01-01
        相关资源
        最近更新 更多