【问题标题】:How to make a NameValueCollection list editable in GlassMapper如何在 GlassMapper 中使 NameValueCollection 列表可编辑
【发布时间】:2017-09-13 08:41:31
【问题描述】:

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

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

GlassMapper 检索项目时对集合进行预处理:

验证 = 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

【问题讨论】:

    标签: sitecore sitecore8 glass-mapper


    【解决方案1】:

    无法在体验编辑器中直接编辑某些类型的复杂字段,例如 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 感兴趣,我曾写过在编辑框架周围添加一个包装器以使用户体验更友好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多