2017-01-10 2 views
1

ich Benutzer möchte der Lage sein, Hintergrundfarbe mit einem Drop-Down-ListeSitecores MVC Standard-Rendering-Parameter

Ich habe erstellt eine neue Vorlage auszuwählen, die von Standard-Rendering-Parameter erbt als Basisvorlage und Standardwert $ hat Name Token

Hier Vorlage Farbdefinition:
Colorname --- --- NA alle/Sitecores/content/Home/Global/Farben

[SitecoreType(TemplateId = "{55DB8F6A-807D-48F8-A3D1-D81037938F13}", AutoMap = true)] 
public interface IColor:IContentBase 
{ 
    string ColorName { get; set; } 
} 

ich auch mehrere Instanzen von Vorlage (Red erstellt haben , Blau, Grün)

enter image description here

Dann ordne ich Farbvorlage auf einen ViewRendering als Parameter.

enter image description here

schließlich in cshtml Datei, ich versuche, diesen Parameter

@using Glass.Mapper.Sc 
@model INews 

<H3> Hot News: </H3> 
@{ 
    var rendering = RenderingContext.Current.Rendering; 
    string id = rendering.Parameters["ColorName"]; 
    var context = new SitecoreContext(); 
    var result=context.GetItem<IColor>(new Guid(id)); 

} 

<div style="background-color: @NewsRepository.GetBackgroundColor(rendering);" class="panel-body"> 
    <br/> 
    <span>@result.ColorName</span><br/> 
    @Model.Title 
</div> 

Das Ergebnis ist immer {55DB8F6A-807d-48F8-A3D1-D81037938F13} während ich erwarte, dass "Green" zu lesen. Ich habe auch versucht, Sitecore-APIs in GlassMapper zu verwenden, aber ich bekomme Guid.

Antwort

2

Da Sie Glass Mapper verwenden, sollten Sie Modelle für Ihre Rendering-Parameter auf die gleiche Weise wie für jede andere Vorlage erstellen.

Erstellen Sie ein Modell für das Nachschlageelement. Ich schlage vor, dass Sie einen generischen Typ erstellen, anstatt ihn "Farbe" zu nennen. Dadurch können Sie sie für andere Nachschlageelemente aus Code wiederverwenden.

[SitecoreType(TemplateId = "{template-guid}", AutoMap = true)] 
public class LookupItemModel : GlassBase 
{ 
    public virtual string Text { get; set; } 
} 

ein Modell für die Rendering-Parameter erstellen. Stellen Sie sicher, dass Sie die TemplateId auf Ihre Rendering-Parameter-Vorlage festlegen. Beachten Sie, dass der Rückgabetyp der Eigenschaft auf LookupItemModel festgelegt ist, den wir oben erstellt haben.

[SitecoreType(TemplateId = "{guid-for-rendering-parameter}", AutoMap = true)] 
public class ColorParameters 
{ 
    public virtual LookupItemModel Color { get; set; } 
} 

Sie können jetzt in Ihren Ansichten auf die Renderparameter als stark typisiertes Modell zugreifen. Da der Rückgabetyp korrekt oben eingestellt ist, wird Glass die GUID automatisch dem Suchobjekt zuordnen, und Sie müssen keinen separaten context.GetItem() Anruf tätigen.

@{ 
    var parameters = Html.Glass().GetRenderingParameters<ColorParameters>(); 
    string color = parameters.Color.Text; 
} 

Sie können mehr über Rendering Parameters in Glass mapper in this article verwenden.

+0

Vielen Dank für Ihre Antwort zu verwenden. Ich hatte IColor Klasse bereits definiert. aber Glas Mapper Return Guid –

+0

Sie müssten Ihre ursprüngliche Frage mit Details aktualisieren, aber es sollte funktionieren. Stellen Sie sicher, dass Sie alle Ihre Vorlagen und Elemente veröffentlicht haben. – jammykam

0

Probieren Sie die folgenden

@result.ColorName.Value.Tostring();