2017-09-13 5 views
1

GlassMapperでNameValueListのコレクションを編集可能にしようとしていますが、これの最下部まで到達できないようです。GlassMapperでNameValueCollectionのリストを編集する方法

フィールドに添付できる検証のリストがあり、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> 
} 

enter image description here

エラー:

失敗したアイテムの解決 - あなたがアイテムIDを表しプロパティが含まれていないクラスを保存することはできません。少なくとも1つのプロパティにSitecore IDが含まれるようにマークされていることを確認してください。タイプ:MyAssembly.Models.Validation

enter image description here

答えて

2

それは直接的なTreelist、Multilistまたは名前値のコレクションとしての経験エディタで複雑なフィールド、特定の種類を編集することはできません。

代わりに、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> 
    } 
} 

あなたは、私はUXをより使いやすくするために編集フレームの周りにラッパーを追加することについて書いたthis blog postに興味があるかもしれません。

+0

ありがとう、カム、これはトリックでした。とても有難い! –

関連する問題