2010-01-15 3 views
14

Возможно ли сделать что-то подобное на странице ASPX?Могу ли я использовать методы расширения inline на странице ASPX?

<%= Me.SomeExtensionMethod() %> 

Я не могу понять, как заставить это работать должным образом. Я получаю сообщение об ошибке, говоря, что «SomeExtensionMethod» не является членом текущего объекта страницы. Я добавил необходимую директиву <%@ Import Namespace="..." %> в верхней части моей страницы. Это Делает работы в кодировке.

Это не жизненно важно, но было бы хорошо знать, как это сделать в будущем.

Спасибо!

ответ

8

Попробуйте закрыть страницу .aspx и снова открыть ее в соответствии с this answer. Если это вообще улучшает ситуацию (например, включить intellisense), но не решает проблему, отправьте все новые ошибки, которые вы получите.

Вы также можете добавить модификатор Public к своему определению Module или class. Если вы используете Модули, для меня действительно не имеет смысла, что это потребуется, но некоторое обсуждение на this forum указывает, что это может помочь.

+1

Это сработало! Как и вы, это действительно не имеет смысла для меня, но добавление модификатора доступа «Public» сделал трюк. Благодаря! – Pwninstein

+0

Работал для меня! Мне пришлось изменить свой модуль на общедоступную область и добавить импорт в «Namespace.ModuleName». – EverPresent

+0

Спасибо - я использовал оператор 'import', и он сработал. – strider

0

Если он работает в коде, добавьте пространство имен для вызова функции:

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

Я хотел бы сделать это, прежде чем я изменить web.config.

9

Добавление импорта в пространство имен работает для меня!

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

Это вот ответ. Это недоступно, потому что класс, содержащий метод расширения, не автоматически импортируется/«используется» в классе, сгенерированном для ASPX. Добавление предложения «Импорт/использование» в кодовом отставании не помогает либо потому, что код-код является только базовым классом класса ASPX. – JMD

Смежные вопросы