2017-08-05 126 views
0

我在我的Sitecore的MVC的要求,以显示在首页轮播项目,然后单击查看时,更会重定向到另一个页面,用户可以查看完整的内容Sitecore的MVC重定向到另一页

我怎么能做到这一点?目前我在Sitecore中的所有项目都有“演示文稿详细信息”中的“控制器渲染”我只是不确定如何获取Carousel Item的GUID,然后在控制器操作中将它重定向到页面上?

回答

0

我假设您在Sitecore的内容树中的一个文件夹下有一些轮播项目,并且每个轮播项目的某些特定字段(如图像,标题等)都应该在轮播项目中带有for链接的字段:

名称:链接
类型:GeneralLink

链路的每个旋转木马项目到正确的页面,然后在你看来,你可以阅读的页面网址:

,你可以用这个方法来获得将链接网址链接到您的轮播组件的页面耳鼻喉科:

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; 
    } 
} 

,并在旋转视图:

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

此代码是从这个answer

0

我认为你需要在控制器动作准备适当的模型对象,然后通过它拍摄到视图。

模型类:

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

控制器动作:

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

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

Razor视图:上述

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

实施例假定 '旋转木马项' 的模板包含 '目标' 链接字段。