2011-12-16 33 views
3

我有一個用Razor編寫的Umbraco宏。我有一個具有兩個媒體選擇器屬性的節點。我希望宏只是採取媒體選擇器屬性,抓取圖像,然後是作物,然後是特定的作物,並將其顯示在圖像標籤中。我有宏的工作正常,但我不知道如何將屬性名稱傳遞給宏。基本上防止我只複製兩次宏,並根據我需要的屬性名稱進行編輯。如何將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 
} 

}

回答

2

如果你定義的宏與參數imgId並調用它像這樣:

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

你實際上是傳遞字段「imageId」的名稱。在宏,則可以通過使用得到模型的圖像標識屬性的值:

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

對於一個幾乎相同的問題&答案,以及如何做助手一樣,也是在這裏看到: Umbraco razor template - Get Formatted Date From Field specified in parameter