2017-08-05 139 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> 

實施例假定 '旋轉木馬項' 的模板包含 '目標' 鏈接字段。