【问题标题】:How do I pass an Umbraco property directly to a macro如何将 Umbraco 属性直接传递给宏
【发布时间】:2011-12-16 15:43:01
【问题描述】:

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

}

【问题讨论】:

    标签: umbraco


    【解决方案1】:

    如果您使用参数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 razor template - Get Formatted Date From Field specified in parameter

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2022-12-31
      • 2016-02-28
      • 2023-01-11
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多