3 Stimmen

Wie kann ich eine Umbraco-Eigenschaft direkt an ein Makro übergeben?

Ich habe ein umbraco-Makro in Razor geschrieben. Und ich habe einen Knoten mit zwei Media-Picker-Eigenschaften. Ich möchte, dass das Makro einfach die Media-Picker-Eigenschaft, greifen das Bild und dann ist es Zuschneiden und dann eine bestimmte Ernte und zeigt es in einem Bild-Tag. Ich habe das Makro funktioniert gut, aber ich kann nicht herausfinden, wie eine Eigenschaft Name an das Makro übergeben. Grundsätzlich zu verhindern, dass ich nur das Makro zweimal kopieren und bearbeiten je nach den Namen der Eigenschaft, die ich benötige.

Mein Makrocode lautet wie folgt. Ich möchte lediglich die @Model.imageId parametrisieren

    @{
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
}

}

2voto

marapet Punkte 52074

Wenn Sie Ihr Makro mit einem Parameter definieren imgId und nennen Sie es so:

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

Sie übergeben tatsächlich den Namen des Feldes "imageId". Im Makro können Sie dann den Wert der Eigenschaft "imageId" des Modells abrufen, indem Sie:

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

Eine fast identische Frage und Antwort sowie eine Anleitung, wie man dasselbe mit Helfern macht, finden Sie auch hier: Umbraco razor template - Erhalte formatiertes Datum von Feld in Parameter angegeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X