2010-01-15 6 views
14

¿Es posible hacer algo como esto en línea en una página ASPX?¿Puedo utilizar métodos de extensión en línea en una página ASPX?

<%= Me.SomeExtensionMethod() %> 

Parece que no se me ocurre cómo hacerlo funcionar correctamente. Recibo un error que dice que "SomeExtensionMethod" no es miembro del objeto Página actual. He agregado la directiva <%@ Import Namespace="..." %> necesaria en la parte superior de mi página. ¿Funciona en código subyacente?

Esto no es de vital importancia, pero sería bueno saber cómo hacerlo en el futuro.

Gracias!

Respuesta

8

Intente cerrar la página .aspx y abrirla de nuevo según this answer. Si eso mejora algo (por ejemplo, habilita intellisense) pero no lo resuelve, publique cualquier error nuevo que obtenga.

También puede agregar el modificador Public a su definición Module o class. Si está utilizando Módulos, realmente no tiene sentido para mí que sea necesario, pero alguna discusión en this forum indica que podría ser útil.

+1

Esto funcionó! Al igual que usted, realmente no tiene sentido para mí, pero agregar el modificador de acceso "Público" hizo el truco. ¡Gracias! – Pwninstein

+0

¡Trabajó para mí! Tuve que cambiar mi módulo a un ámbito público y agregar una importación a "Namespace.ModuleName". – EverPresent

+0

Gracias - Usé la declaración 'import' y funcionó. – strider

0

Si funciona en el código subyacente, agregue el espacio de nombres a la llamada de función:

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

me gustaría hacer esto antes de que yo modifico el web.config.

9

Agregar importaciones en el espacio de nombres funciona para mí!

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

Esta es la respuesta. Es inaccesible porque la clase que contiene el método de extensión no se importa-ed/'using'-ed automáticamente dentro de la clase generada para ASPX. Agregar una cláusula Importar/usar en el código subyacente tampoco ayuda porque el código subyacente es solo la clase base de la clase ASPX. – JMD

Cuestiones relacionadas