如何映射到 Sitecore 规则字段

How to map to Sitecore Rules Field

我在映射到 Sitecore 中的 Rules 数据字段时遇到了一些问题。我有一个渲染参数模板,其中有一个名为 "Redirect Rules."

的数据字段

我正在使用 TDS 和 Glass 将对象映射回 Sitecore。在生成的 class 中,我得到以下内容:

/// <summary>
/// The Redirect Rule field.
/// <para></para>
/// <para>Field Type: Rules</para>      
/// <para>Field ID: 659373d6-c5c5-4851-aa1f-066f53218780</para>
/// <para>Custom Data: </para>
/// </summary>
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Team Development for Sitecore - GlassItem.tt", "1.0")]
    [SitecoreField(IMy_Name_Rendering_ParametersConstants.Redirect_RuleFieldName)]
    public virtual object /* UNKNOWN */ Redirect_Rule  {get; set;}

当我试图通过

在视图渲染中获取 "Redirect Rules" 字段的值时
GetRenderingParameters<My_Name_Rendering_Parameters>();

"Redirect Rules"属性 为空。我已通过在体验编辑器中检查该字段来验证该字段是否填充了规则。

对可能发生的事情有任何线索吗?

克雷格。在此处查找将规则字段映射到字符串值的修改后的 T4 模板:https://gist.github.com/patrickperrone/9626cccbd044cc418539

这是我的blog post,更详细地介绍了这一点。

摘自我的 post:

The basic issue is that the glassv3item.tt template doesn't know how to deal with the Rules field. The GetGlassFieldByType method is responsible for assigning a type to mapped field. It does this with a switch statement. Our rules field is falling all the way through to the default case which maps the field to an object. We need to add a case for the field.Type value when it equals "rules".

简短回答:当值等于 "rules".

时,我使用 string 类型作为映射的 field.Type

您可以在第 246-247 行亲自查看 here