Значение текстового поля преобразования Кентико в макросе

У меня есть преобразование Kentico с текстовым полем и кнопкой, которая запускает собственный метод макроса, который требует, чтобы я передал значение в текстовое поле. Как я могу получить к нему доступ с помощью k #?

<input type="text" name="foo"/>
<asp:LinkButton runat="server" OnClick="<%# CustomMacroMethod(~foo.value~) %>" >Button</asp:LinkButton> 

Есть ли способ получить доступ к этому значению?


person Spitfire2k6    schedule 21.03.2017    source источник
comment
Во-первых, вы не можете использовать макрос в преобразовании ASCX. Макрос можно использовать только в среде HTML. Так что вам нужно будет использовать там API. Кроме того, вы пытаетесь передать значение туда или пытаетесь получить значение оттуда.   -  person Rui    schedule 21.03.2017


Ответы (2)


Лучший способ получить к нему доступ - это:

  1. создать собственный статический метод,
  2. добавить настраиваемое преобразование метод, вызывающий этот пользовательский статический метод,
  3. добавьте метод макроса, вызывающий этот настраиваемый статический метод.

Это может показаться излишним, но позволяет использовать один и тот же код на всем сайте и в API.

person Brenden Kehren    schedule 21.03.2017
comment
Вы говорите, что нет простого способа получить доступ к содержимому текстового поля в преобразовании? Конечно, это неправда ... - person Spitfire2k6; 22.03.2017
comment
Я просто заявляю, что это будет лучшая практика. Вы можете создать метод внутри преобразования для выполнения работы, хотя жизненный цикл страницы Kentico отличается от стандартных форм asp.net, поэтому то, что вы можете ожидать, скорее всего, не произойдет, если вы не создадите метод преобразования или настраиваемый элемент управления для обработки это. Взгляните на преобразование электронной коммерции, в котором есть кнопка «Добавить в корзину». Это должно дать вам хорошее представление о том, о чем я говорю. - person Brenden Kehren; 22.03.2017

Если вы используете преобразование и хотите использовать макрос - вам необходимо вызвать преобразователь макросов

‹% # CMS.MacroEngine.MacroResolver.Resolve (" {% CustomMacroMethod (~ foo.value ~)%} ")

Google "Разрешение макросов внутри трансформации" есть масса ответов.

person Peter Mogilnitski    schedule 21.03.2017
comment
Макрос работает нормально. Я тестировал его со значениями по умолчанию. Проблема здесь в получении содержимого текстового поля и передаче его в качестве параметра! - person Spitfire2k6; 22.03.2017