【问题标题】:Can I use Extension Methods inline in an ASPX page?我可以在 ASPX 页面中使用内联扩展方法吗?
【发布时间】:2020-08-26 00:52:15
【问题描述】:

是否可以在 ASPX 页面中内联执行类似的操作?

<%= Me.SomeExtensionMethod() %>

我似乎无法弄清楚如何让它正常工作。我收到一条错误消息,指出“SomeExtensionMethod”不是当前 Page 对象的成员。我在页面顶部添加了必要的&lt;%@ Import Namespace="..." %&gt; 指令。这确实在代码隐藏中工作。

这不是很重要,但知道将来该怎么做会很好。

谢谢!

【问题讨论】:

    标签: asp.net extension-methods inline-code


    【解决方案1】:

    在命名空间中添加导入对我有用!

    <%@ Import Namespace="Foo.FooFoo" %>
    

    【讨论】:

    • 这就是答案。它是不可访问的,因为包含扩展方法的类不是在为 ASPX 生成的类中自动导入/'使用'-ed。在代码隐藏中添加 Import/using 子句也无济于事,因为代码隐藏只是 ASPX 类的基类。
    【解决方案2】:

    如果它在代码隐藏中工作,请将命名空间添加到函数调用中:

    <%=MyNamespace.ExtensionFcn("hello, world") %>
    

    我会在修改 web.config 之前执行此操作。

    【讨论】:

      【解决方案3】:

      尝试关闭.aspx 页面并按照this answer 再次打开它。如果这完全改善了问题(例如启用智能感知)但没有解决问题,请发布您遇到的任何新错误。

      您还可以将 Public 修饰符添加到您的 Module 或 class 定义中。如果您使用的是 Modules,对我来说它确实没有必要,但在 this forum 上的一些讨论表明它可能会有所帮助。

      【讨论】:

      • 这成功了!像你一样,这对我来说真的没有意义,但是添加“公共”访问修饰符就可以了。谢谢!
      • 为我工作!我确实必须将我的模块更改为公共范围并将导入添加到“Namespace.ModuleName”。
      • 谢谢 - 我使用了import 语句,它成功了。
      猜你喜欢
      • 2016-06-03
      • 2016-06-13
      • 2023-04-02
      • 2011-11-21
      • 2021-12-25
      • 2016-11-27
      相关资源
      最近更新 更多