我有一个用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
}
}
答案 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