如何在GlassMapper

时间:2017-09-13 08:41:32

标签: sitecore sitecore8 glass-mapper

我正在尝试使用GlassMapper使NameValueList集合可编辑,我似乎无法深入了解这一点。

我们有一个可以附加到字段的验证列表,我希望在ExperienceEditor中可以编辑验证消息。

当GlassMapper检索项目时,预处理集合:

  

Validations = glassItem.GetValidations();

@foreach(Validation validation in Model.Validations)
{
 <div id="@validation.Identifier" ng-message="@validation.AngularKey" ng-cloak class="mtg-validation-msg">                           
    @Html.Glass().Editable(validation, e => e.ErrorMessage)
 </div>  
}

enter image description here

我收到错误:

  

项目解决失败 - 您无法保存不包含表示项目ID的属性的类。确保至少有一个属性已标记为包含Sitecore ID。键入:MyAssembly.Models.Validation

enter image description here

1 个答案:

答案 0 :(得分:2)

无法在体验编辑器中直接编辑某些类型的复杂字段,例如Treelist,Multilist或Name Value Collection。

相反,您应该设置并使用Edit Frame。这将弹出一个模态对话框,允许您编辑该字段,它不是内联的,但意味着您不需要离开体验编辑器。这是解决此问题的推荐方法。

由于您使用的是Glass Mapper since version 4,您可以直接从代码声明编辑框架,现在必须先在Core数据库中声明/设置它们。

@if (Sitecore.Context.PageMode.IsExperienceEditor)
{
    using (Html.Glass().BeginEditFrame(Model, "Edit", x => x.Validations))
    {
        <div>Edit Validations</div>
    }
}

您可能对this blog post感兴趣我写了一篇关于在编辑框架周围添加包装器以使UX更友好的文章。

相关问题