我希望用户能够使用下拉列表选择背景颜色
我创建了一个新模板,它继承自标准渲染参数作为基本模板,标准值具有$ name标记
这是模板颜色定义:
ColorName --- --- DropLink / Sitecore的/内容/主页/全球/颜色
[SitecoreType(TemplateId = "{55DB8F6A-807D-48F8-A3D1-D81037938F13}", AutoMap = true)]
public interface IColor:IContentBase
{
string ColorName { get; set; }
}
我还创建了多个模板实例(红色,蓝色,绿色)
然后我将Color模板指定给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},而我期待“绿色”。还试图使用SiteMap API实现的GlassMapper,但我仍然得到了Guid。
答案 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();