我正在尝试使用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>
}
我收到错误:
项目解决失败 - 您无法保存不包含表示项目ID的属性的类。确保至少有一个属性已标记为包含Sitecore ID。键入:MyAssembly.Models.Validation
答案 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更友好的文章。