我可以在ASPX页面中内联使用扩展方法吗?

20

在 ASPX 页面内可以像这样内嵌执行代码吗?

<%= Me.SomeExtensionMethod() %>

我似乎无法弄清楚如何使其正常工作。我收到一个错误,说 "SomeExtensionMethod" 不是当前页面对象的成员。我已在页面顶部添加了必要的 <%@ Import Namespace="..." %> 指令。这在代码后台中可以工作。

虽然这不是非常重要,但在将来知道如何做会很有好处。

谢谢!

3个回答

15

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

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

2
这里是答案。它无法访问,因为包含扩展方法的类没有在生成的ASPX类中自动导入/使用。在代码后台添加导入/使用子句也没有帮助,因为代码后台只是ASPX类的基类。 - JMD
这与Michael Haren的答案结合使用。 - OfirD

10

尝试关闭 .aspx 页面,再按照这篇回答重新打开。如果有任何改进(例如启用 IntelliSense),但问题并未解决,请发布任何新错误信息。

您还可以将 Public 修饰符添加到您的 Moduleclass 定义中。如果您正在使用 Modules,则我真的不明白为什么需要,但是这个论坛上的一些讨论表明它可能会有所帮助。


1
这个有效了!像你一样,我真的不理解,但是添加“Public”访问修饰符解决了问题。谢谢! - Mark Carpenter
对我有用!我确实需要将我的模块更改为公共范围,并添加一个导入到“Namespace.ModuleName”。 - EverPresent
谢谢 - 我使用了 import 语句,它起作用了。 - strider

1
如果在代码后端可以正常工作,那么将命名空间添加到函数调用中:
<%=MyNamespace.ExtensionFcn("hello, world") %>

在修改 web.config 之前,我会先这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接