代码之家  ›  专栏  ›  技术社区  ›  Adrian Iorgu

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

  •  1
  • Adrian Iorgu  · 技术社区  · 8 年前

    我正在尝试使用GlassMapper使NameValueList集合可编辑,但我似乎无法弄清到底。

    验证=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。模型。验证

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  2
  •   jammykam    8 年前

    在体验编辑器中无法直接编辑某些类型的复杂字段,例如树列表、多列表或名称值集合。

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

    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 我写了关于在编辑框架周围添加包装器以使用户体验更友好的文章。