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();
我希望用户能够使用下拉列表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();