Как передать свойство Umbraco непосредственно в макрос - PullRequest
3 голосов
/ 16 декабря 2011

У меня есть макрос umbraco, написанный на Razor. И у меня есть узел с двумя свойствами медиа-выбора. Я хочу, чтобы макрос просто взял свойство средства выбора медиафайлов, захватил изображение, затем его кадрирование, а затем конкретный кадрирование и отобразил его в теге изображения. Макрос работает нормально, но я не могу понять, как передать имя свойства в макрос. В основном, чтобы я не мог просто скопировать макрос дважды и редактировать в зависимости от требуемого имени свойства.

Мой код макроса выглядит следующим образом. Все, что я хочу сделать, это параметризовать @ Model.imageId

    @{
var image = Model.MediaById(@Model.imageId);

if (image != null)
{    
    var crops = image.imageCropper.crops;

    if (crops != null || crops.GetType().ToString() != "System.String")
    {
        <img src="@crops.Find("@name", "home-promo").url" width="217" height="163" />
    } // if
}

}

1 Ответ

2 голосов
/ 17 декабря 2011

Если вы определяете свой макрос с параметром imgId и называете его так:

<umbraco:Macro ID="Macro1" Alias="CropMacro" imgId="imageId" runat="server"></umbraco:Macro>

Вы фактически передаете имя поля "imageId".В макросе вы можете получить значение свойства imageId модели, используя:

var image = Model.MediaById(Model.getProperty(Parameter.imgId).Value)

Для почти идентичных вопросов и ответов, а также для того, как сделать то же самое с помощниками, см. Также здесь: Шаблон бритвы Umbraco - Получить форматированную дату из поля, указанного в параметре

...