Динамические свойства или параметры Umbraco в макросе бритвы не работают - PullRequest
1 голос
/ 31 марта 2012

Это сводит меня с ума!

Я делал это раньше, и я знаю, что это должно сработать, и это должно быть просто.

Я создал макрос, подобный этому

@inherits umbraco.MacroEngines.DynamicNodeContext
@{
    string ParameterName = Parameter.Name;
    <span>@ParameterName</span>
 }

и на странице:

<umbraco:macro Alias="MasterpageParameter" language="cshtml" runat="server" Name="logoText"></umbraco:macro>

Макрос успешно регистрируется (потому что я могу печатать другие данные на экране, и в этом случае я вижу, как печатается от), но Параметр всегда пуст. Я пробовал строчные буквы, другие имена (например, Param1, Param2 и т. Д.), А параметр всегда пуст.

Я уверен, что сделал что-то идентичное в другом проекте, который до этого работал нормально. Не могу узнать, что мешает этому макросу работать.

Что еще хуже, это то, что если я добавляю свойство в DocumentType, то есть «IsReadable», то, что я ранее делал в предыдущем проекте, проходило по страницам и показывало что-то вроде if (item.IsReadable) и т. Д. Теперь, используя то же самое Версия Umbraco ВСЕ динамические переменные пусты. Кажется, здесь что-то не так, но я не знаю, как это исправить.

Я использую umbraco v 4.7.1.1 (сборочная версия: 1.0.4393.24044)

Любая помощь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Похоже, вы не определили параметр в определении макроса в CMS. В этом случае это будет на вкладке «Параметры» макроса «MasterpageParameter».

1 голос
/ 04 апреля 2012

Я решил это, добавив:

@using umbraco;
@using System;
@using System.Collections.Generic;
@using umbraco.MacroEngines;

Возможно, нужны только некоторые из них, но я не удосужился узнать. Однако недостаточно просто добавить MacroEngines ...

Это странно, потому что в предыдущем проекте они не нужны. Возможно, они не имеют должной ссылки в файле web.config в этом проекте или что-то в этом роде. Во всяком случае, теперь это работает, поэтому я счастлив

0 голосов
/ 20 ноября 2015

В вашем шаблоне или представлении макрос вызывается таким образом

@Umbraco.RenderMacro("YourMacro" ,new {ArticleId = @Umbraco.Field("yourField")})

при использовании веб-форм

<umbraco:macro ID="Macro1" Alias="YourMacro" runat="server" ArticleId="223"></umbraco:macro>

Где «ArticleId» - параметр, который вы хотите передать.Затем обязательно добавьте параметр «ArticleId» в список параметров для вашего макроса из раздела для разработчиков.

Затем в вашей XSLT-ссылке параметр будет выглядеть следующим образом:

<xsl:param name="ArticleId" select="/macro/ArticleId"/>

И затем вы можете использовать его в своем xslt, используя значение, переданное, например,

<xsl:value-of select="$ArticleId" />
...