Sitecore MVC 标准渲染参数

Sitecore MVC Standard Rendering Parameters

我希望用户能够使用下拉列表select背景色

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

这是模板颜色定义:
ColorName---DropLink---/sitecore/content/Home/Global/Colors

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

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

然后我将颜色模板作为参数分配给 ViewRendering。

最后,在 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} 而我期望 "Green"。还尝试使用 GlassMapper 的 Sitecore API,但我仍然得到 Guid 。

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

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

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

为您的渲染参数创建一个模型。确保将 TemplateId 设置为渲染参数模板。请注意,属性 的 return 类型设置为我们在上面创建的 LookupItemModel

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

您现在可以在视图中将渲染参数作为强类型模型访问。由于上面正确设置了 return 类型,Glass 会自动将 guid 映射到查找项,您无需进行单独的 context.GetItem() 调用。

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

您可以详细了解如何使用 Rendering Parameters in Glass mapper in this article

尝试使用以下

@result.ColorName.Value.Tostring();