2017-01-10 12 views
1

私は基本テンプレートと標準値は$を持っているとして、標準のレンダリングパラメータを継承する新しいテンプレートを作成したドロップダウンリストサイトコアMVC標準レンダリングパラメータ

を使用して背景色を選択することができ、ユーザーにしたいですテンプレートの色の定義である。ここトークン

に名前:私も、テンプレートの複数のインスタンスを作成した
は、colorName ---ドロップリンク--- /サイトコア/コンテンツ/ホーム/グローバル/色

[SitecoreType(TemplateId = "{55DB8F6A-807D-48F8-A3D1-D81037938F13}", AutoMap = true)] 
public interface IColor:IContentBase 
{ 
    string ColorName { get; set; } 
} 

(レッド、青、緑)

enter image description here

は、それから私は、パラメータとしてViewRenderingにカラーテンプレートを割り当てます。

enter image description here

最後に、CSHTMLファイルで、私は、このパラメータを読み取ろう

@using Glass.Mapper.Sc 
@model INews 

<H3> Hot News: </H3> 
@{ 
    var rendering = RenderingContext.Current.Rendering; 
    string id = rendering.Parameters["ColorName"]; 
    var context = new SitecoreContext(); 
    var result=context.GetItem<IColor>(new Guid(id)); 

} 

<div style="background-color: @NewsRepository.GetBackgroundColor(rendering);" class="panel-body"> 
    <br/> 
    <span>@result.ColorName</span><br/> 
    @Model.Title 
</div> 

私は "グリーン" を期待するのに対し、結果は常に{55DB8F6A-807D-48F8-A3D1-D81037938F13}です。また、GlassMapperをインストールしたSitecore APIを使用しようとしましたが、引き続きGuidを取得しました。

答えて

2

Glass Mapperを使用しているので、他のテンプレートと同じように、レンダリングパラメータのモデルを作成する必要があります。

ルックアップ項目のモデルを作成します。私はあなたがそれを "色"と呼ぶのではなくジェネリックタイプを作成することをお勧めします。これにより、コードから他の検索項目に再利用することができます。

[SitecoreType(TemplateId = "{template-guid}", AutoMap = true)] 
public class LookupItemModel : GlassBase 
{ 
    public virtual string Text { get; set; } 
} 

レンダリングパラメータのモデルを作成します。レンダリングパラメータテンプレートにTemplateIdを設定してください。プロパティの戻り値の型は、上記で作成したLookupItemModelに設定されています。

[SitecoreType(TemplateId = "{guid-for-rendering-parameter}", AutoMap = true)] 
public class ColorParameters 
{ 
    public virtual LookupItemModel Color { get; set; } 
} 

レンダリングパラメータに厳密に型指定されたモデルとしてアクセスできるようになりました。上記の戻り値のタイプが正しく設定されているため、GlassはGUIDをルックアップ項目に自動的にマッピングし、別途context.GetItem()コールを行う必要はありません。

@{ 
    var parameters = Html.Glass().GetRenderingParameters<ColorParameters>(); 
    string color = parameters.Color.Text; 
} 

詳細についてはRendering Parameters in Glass mapper in this articleを使用してください。

+0

感謝を使用してみてください。 私はすでにIColorクラスを定義していました。 glass mapper return Guid –

+0

元の質問を詳細で更新する必要がありますが、それはうまくいくはずです。すべてのテンプレートとアイテムを公開していることを確認してください。 – jammykam

0

は、あなたの答えのために、以下の

@result.ColorName.Value.Tostring();