2016-11-29 20 views
0

私はSitecoreプロジェクトに取り組んでいます。私は、ランディングページと呼ばれるサイトコアのアイテムを持っています。ランディングページには空のレイアウトがあります。 1つのプレースホルダで私はこのプレースホルダに1つのコントローラレンダリングを付けました。このコントローラからレンダリングページ全体がレンダリングされます。別のページへのSitecoreのリンクとオブジェクトの受け渡し

ランディングページの主な目的はすべてのオファーを表示することです。オファーはMultilistタイプです。私は、ランディングページの項目に複数のフィールドを提供しました。私の単一コントローラのレンダリング方法で

私が使用しています:

var Sitecoreoffers = (Sitecore.Data.Fields.MultilistField)item.Fields["Offers"]; 

はランディングページのオファーフィールドにアクセスするには。私のアクションメソッドでは、コントローラレンダリングがポイントしています。私は、Sitecore項目のランディングページフィールドからオファーを受け取り、それをC#Listデータ型と同じにする独自のビューモデルを構築しました。

私が今やりたいのは、ユーザーがオファーをクリックしてオファーの詳細ページにリダイレクトされたときです。これを行うためには;提案IDをアクションメソッドに送信したいと思います。オファーの詳細ページのオファーのすべてのフィールドにアクセスすることができます。 C#では、私が現在実装している@ html.ActionLinkがあります。これに取り組む最善の方法について助言はありますか?

答えて

0

あなたの実装では、「詳細ページ」自体であることを考えると、Sitecoreサイトでそれらにリンクする正しい方法は、これらのページに通常の<a href>を生成し、ブラウザにフルページリクエストを実行させることです。

サイトコアAPIは、タイプSitecore.Data.Items.Itemのオブジェクトを取得し、アイテムに優しいURLを返しGetItemUrlという静的メソッドを有するLinkManagerと呼ばれるクラスを提供します。

あなたの場合は、Sitecoreoffersコレクション内のオブジェクトをループし、LinkManager.GetItemUrlを使用してそれぞれのフレンドリーなURLを取得します。あなたのSitecoreoffersオブジェクトの各SitecoreアイテムのAタグを生成するかみそりファイルにforeachループを作成することができます。

関連する問題