2012-03-31 4 views
1

Dies ist im Begriff, mich völlig verrückt zu fahren!Umbraco dynamische Eigenschaften oder Parameter im Rasierer Makro nicht funktionieren

Ich habe das schon einmal gemacht und ich weiß, es sollte funktionieren und es sollte einfach sein.

Ich habe ein Makro erstellt, die wie dieser ist

@inherits umbraco.MacroEngines.DynamicNodeContext 
@{ 
    string ParameterName = Parameter.Name; 
    <span>@ParameterName</span> 
} 

und auf der Seite:

<umbraco:macro Alias="MasterpageParameter" language="cshtml" runat="server" Name="logoText"></umbraco:macro> 

Das Makro-Register erfolgreich (weil ich andere Daten auf dem Bildschirm drucken und in thise Fall kann ich sehen, die gets gedruckt wird), aber der Parameter ist immer leer. Ich habe versucht, Kleinbuchstaben, andere Namen (z. B. Param1 Param2 usw.) und der Parameter ist immer leer.

Ich bin mir sicher, dass ich etwas in einem anderen Projekt identisch gemacht habe, bevor das funktionierte. Kann unmöglich herausfinden, was dieses Makro daran hindert zu arbeiten.

Was ist noch schlimmer ist, dass, wenn ich eine Eigenschaft auf einem DocumentType hinzufügen, dh "IsReadable" was ich zuvor in einem früheren Projekt getan wurde Schleife durch die Seiten und sagen etwas wie if (item.IsReadable) usw. Jetzt mit dem Gleiche Version von Umbraco ALL dynamische Variablen sind leer. Etwas scheint hier wirklich falsch zu sein, aber ich weiß nicht, wie ich es beheben soll.

Ich verwende umbraco v 4.7.1.1 (Assembly Version: 1.0.4393.24044)

Jede Hilfe bitte?

+0

welche Version verwenden Sie? –

+0

Umbraco 4.7.1 (Entschuldigung für das Vergessen) – Nick

Antwort

1

Ich löste es durch diese Zugabe:

@using umbraco; 
@using System; 
@using System.Collections.Generic; 
@using umbraco.MacroEngines; 

Wahrscheinlich nur einige von ihnen benötigt werden, aber ich habe nicht herausfinden, gestört. Hinzufügen nur MacroEngines ist nicht genug, obwohl ...

Es ist bizarre Ursache auf einem früheren Projekt sind diese nicht erforderlich. Vielleicht sind sie in der web.config in diesem Projekt oder in ähnlicher Weise nicht richtig referenziert. Auf jeden Fall funktioniert es jetzt so glücklich, ich bin

2

Es klingt, als hätten Sie den Parameter in der Makrodefinition im CMS nicht definiert. In diesem Fall wird es auf der Registerkarte "Parameter" des Makros "MasterpageParameter" angezeigt.

+0

Ich hatte und das hatte nichts geändert. Ich habe es geschafft, es zu lösen ... – Nick

0

in Ihrer Vorlage oder sehen Sie

@Umbraco.RenderMacro("YourMacro" ,new {ArticleId = @Umbraco.Field("yourField")}) 

diese Weise wird das Makro aufrufen, wenn webforms

<umbraco:macro ID="Macro1" Alias="YourMacro" runat="server" ArticleId="223"></umbraco:macro> 

mit Where "articleId" ist der Parameter, die Sie wollen bestehen. Dann stellen Sie sicher, den Parameter "ArticleId" der Liste der Parameter für Ihr Makro aus dem Entwicklerbereich hinzuzufügen.

Dann in Ihrem XSLT Referenz den Parameter wie so

<xsl:param name="ArticleId" select="/macro/ArticleId"/> 

und Sie können dann Benutzer es in Ihrem Xslt den Wert zum Beispiel übergeben mit

<xsl:value-of select="$ArticleId" />