2017-08-05 8 views
0

にリダイレクト私はホームページでカルーセルのアイテムを表示するために、私のサイトコアMVCでの要件を持っていたし、もっとView]をクリックすると、ユーザーはサイトコアMVCは他のページ

がどのようにできた完全なコンテンツを閲覧することは別のページにリダイレクトしますこれを達成するには?現在、Sitecoreのすべてのアイテムにプレゼンテーションの詳細でコントローラレンダリングがあります。私はちょうどそれがページ上でリダイレクトするコントローラーアクションで使用して、カルーセル項目のGUIDを取得する方法はわかりませんか?

答えて

0

イメージ、タイトルなどの各カルーセルアイテムの特定のフィールドをいくつか含むSitecoreのコンテンツツリーの1つのフォルダの下にカルーセルアイテムがあると仮定します。そのため、カルーセルアイテムのフィールドにlink:

名:リンク
タイプ:GeneralLink

適切なページへのリンク、各カルーセル項目、そして、あなたのビューでは、ページのURL読み取ることができます。

を、あなたが取得するには、このメソッドを使用することができますカルーセルコンポーネントのページへのリンクURL 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; 
    } 
} 

とあなたのカルーセルビューで:このコードは、このanswer

0

から取られ

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

私はあなたがコントローラのアクションに適切なモデルオブジェクトを用意し、それを渡す必要があると思いますビューに。

Modelクラス:

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

カミソリビュー:

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

例は、上記の 'カルーセル項目' のテンプレートが含まれていることを前提とし 'ターゲット' リンクフィールド。

関連する問題