2017-08-05 4 views
0

Ich hatte eine Anforderung in meinem Sitecores MVC Carousel Artikel in der Homepage angezeigt werden und wenn die Ansicht klicken, um mehr wird es auf eine andere Seite umleiten für Benutzer den vollständigen InhaltSitecores MVC auf eine andere Seite umleiten

Wie konnte sehen I Dies erreichen? Derzeit haben alle meine Artikel in Sitecore Controller-Rendering in Präsentationsdetails. Ich bin nur nicht sicher, wie man die GUID des Karussell Items mithilfe von dann in der Controller-Aktion wird es auf der Seite umleiten?

Antwort

0

Ich nehme an, dass Sie Karussell-Elemente unter einem Ordner in Ihrem Inhaltsbaum in Sitecore mit bestimmten Feldern für jedes Karussellelement wie Bild, Titel usw. haben, also sollten Sie Feld in den Karussell-Elementen mit für Link haben:

Name: Link
Typ: GeneralLink

Link jedes Karussell Element auf die richtige Seite, und dann in der Ansicht können Sie die Seite URL lesen:

und Sie können mit dieser Methode zu erhalten Verknüpfen Sie die URL mit der Seite von Ihrer Karussellkomponente ent:

public String LinkUrl(Sitecore.Data.Fields.LinkField lf) 
{ 
    switch (lf.LinkType.ToLower()) 
    { 
     case "internal": 
     // Use LinkMananger for internal links, if link is not empty 
     return lf.TargetItem != null ? Sitecore.Links.LinkManager.GetItemUrl(lf.TargetItem) : string.Empty; 
     case "media": 
     // Use MediaManager for media links, if link is not empty 
     return lf.TargetItem != null ? Sitecore.Resources.Media.MediaManager.GetMediaUrl(lf.TargetItem) : string.Empty; 
     case "external": 
     // Just return external links 
     return lf.Url; 
     case "anchor": 
     // Prefix anchor link with # if link if not empty 
     return !string.IsNullOrEmpty(lf.Anchor) ? "#" + lf.Anchor : string.Empty; 
     case "mailto": 
     // Just return mailto link 
     return lf.Url; 
     case "javascript": 
     // Just return javascript 
     return lf.Url; 
     default: 
     // Just please the compiler, this 
     // condition will never be met 
     return lf.Url; 
    } 
} 

und im Karussell-Ansicht:

Sitecore.Data.Fields.LinkField linkField = carouselItem.Fields["Link"]; 
var pageUrl = linkField.LinkUrl(); 

Dieser Code ist aus diesem answer

0

Ich glaube, Sie Objekt in der Controller-Aktion entsprechende Modell genommen vorbereiten müssen und geben es dann zur Aussicht.

Modellklasse:

public class CarouselModel 
{ 
    public List<Item> CarouselItems { get; set; } 
} 

Controller-Aktion:

public ActionResult Carousel() 
{ 
    var model = new CarouselModel 
    { 
     CarouselItems = /* get appropriate items dependent on your logic */ 
    }; 

    return View("~/Views/renderings/Carousel.cshtml", model); 
} 

Razor Ansicht:

@model CarouselModel 

<div> 
    @foreach(var carouselItem in Model.CarouselItems) 
    { 
     Sitecore.Data.Fields.LinkField targetLinkField = carouselItem.Fields["Target"];  
     <a href="@Sitecore.Links.LinkManager.GetItemUrl(targetLinkField.TargetItem)">Some link</a> 
    } 
</div> 

Beispiel geht von oben, dass Vorlage von 'Carousel Item' Feld 'Ziel' enthält Link .

Verwandte Themen