如何使 NameValueCollection 列表在 GlassMapper 中可编辑

How to make a NameValueCollection list editable in GlassMapper

我正在尝试使用 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>  
}

我遇到的错误:

Failed item resolve - You cannot save a class that does not contain a property that represents the item ID. Ensure that at least one property has been marked to contain the Sitecore ID. Type: MyAssembly.Models.Validation

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

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

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

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

您可能对 this blog post 我写过关于在编辑框架周围添加包装以使用户体验更友好的文章感兴趣。