如何将Umbraco属性直接传递给宏

时间:2011-12-16 15:43:01

标签: umbraco

我有一个用Razor写的umbraco宏。我有一个带有两个媒体选择器属性的节点。我希望宏只是简单地获取媒体选择器属性,抓取图像,然后是庄稼然后是特定裁剪,并将其显示在图像标签中。我有宏工作正常,但我无法弄清楚如何将属性名称传递给宏。基本上是为了防止我只复制宏两次并根据我需要的属性名进行编辑。

我的宏代码如下。我想做的就是参数化@ 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 个答案:

答案 0 :(得分:2)

如果您使用参数imgId定义宏并按以下方式调用它:

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

您实际上传递了该字段的名称&#34; imageId&#34;。在宏中,您可以使用:

获取Model的imageId属性的值
var image = Model.MediaById(Model.getProperty(Parameter.imgId).Value)

对于一个几乎完全相同的问题&amp;回答,以及如何对助手做同样的事情,另见: Umbraco razor template - Get Formatted Date From Field specified in parameter