Sitecore MVC标准渲染参数

时间:2017-01-10 09:53:45

标签: asp.net-mvc sitecore sitecore8 sitecore-mvc glass-mapper

我希望用户能够使用下拉列表选择背景颜色

我创建了一个新模板,它继承自标准渲染参数作为基本模板,标准值具有$ name标记

这是模板颜色定义:
ColorName --- --- DropLink / Sitecore的/内容/主页/全球/颜色

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

我还创建了多个模板实例(红色,蓝色,绿色)

enter image description here

然后我将Color模板指定给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},而我期待“绿色”。还试图使用SiteMap API实现的GlassMapper,但我仍然得到了Guid。

2 个答案:

答案 0 :(得分:3)

由于您使用的是Glass Mapper,因此您应该为渲染参数创建模型,就像使用任何其他模板一样。

为查找项创建模型。我建议你创建一个泛型类型,而不是调用它&#34; Color&#34;。这将允许您将它们重新用于代码中的其他查找项。

[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

答案 1 :(得分:1)

尝试使用以下

@result.ColorName.Value.Tostring();