2016-08-30 11 views
1

現在、episerver 9 cmsで作業中です。Episerverは編集モードのグリッドで複合データ型をカスタマイズします

私は次のように私のページ/ブロックを持っている:

public class MenuBlock : SiteBlockData 
    { 

     [Display(
      Name = "Menu title", 
      Description = "* Required", 
      GroupName = SystemTabNames.Content, 
      Order = 1)] 
     public virtual string MenuTitle { get; set; } 


     [Display(
      Name = "Section", 
      Description = "Add menu sections", 
      GroupName = SystemTabNames.Content, 
      Order = 3)] 
     [EditorDescriptor(EditorDescriptorType = typeof(CollectionEditorDescriptor<SectionBlock>))] 
     public virtual IList<SectionBlock> Section { get; set; } 

    } 

public class SectionBlock 
    { 
     [Display(
      Name = "Section name", 
      Description = "Select the Menu Image", 
      GroupName = SystemTabNames.Content, 
      Order = 1)] 
     public virtual string SectionName { get; set; } 

     [Display(
      Name = "Dishes", 
      Description = "Dishes", 
      GroupName = SystemTabNames.Content, 
      Order = 2)] 
     [EditorDescriptor(EditorDescriptorType = typeof(CollectionEditorDescriptor<DishBlock>))] 
     public virtual IList<DishBlock> Dishes { get; set; } 
    } 

public class DishBlock 
    { 
     [Required(ErrorMessage = "Dish name is required")] 
     [Display(Name = "Dish name", 
      Description = "* Required", 
      GroupName = SystemTabNames.Content, 
      Order = 1)] 
     public virtual string DishName { get; set; } 

     [Display(
      Name = "Dish description", 
      Description = "", 
      GroupName = SystemTabNames.Content, 
      Order = 2)] 
     [UIHint(UIHint.Textarea)] 
     public virtual string DishDescription { get; set; } 

     [Display(
      Name = "Price", 
      Description = "", 
      GroupName = SystemTabNames.Content, 
      Order = 4)] 

     public virtual double Price { get; set; } 

    } 

を今CMS、編集モードでは、それは enter image description here

あなたが見ることができるように、皿を[オブジェクトのオブジェクト]としてレンダリングされているとしてレンダリングされますdishNameの代わりに使用します。

誰も私にこれを達成する方法を提案できますか?

ありがとうございました。

+0

のpropertylistエディタはまだベータ版であり、そしてそれはとは対照的に、適切にそのユースケース(に複雑なタイプをレンダリングする方法はありません文字列、整数など)。カスタムエディタを使用してプロジェクトでこれを解決しました。 –

+0

@TedNyberg: ご意見ありがとうございます。その場合、どうやってそれを解決したのですか?任意のチュートリアル/リンクは素晴らしいでしょう。どのようにカスタムエディタを使用して解決することができますか? – user1641519

+0

元の 'CollectionEditor'エディタを継承し、オブジェクトのレンダリング方法をオーバーライドしました。 Episerverネイティブエディタのソースコードを見るには、UIソースNuGetパッケージがあることを確認してください。 –

答えて

0

CollectionEditorを継承した独自のDojoウィジェットを作成し、アイテムのレンダリング方法をカスタマイズできます。

適用可能なPropertyListプロパティのEditorDescriptor属性を使用してカスタムエディタを指定します。

+0

お返事ありがとうございました:) 最後の1つは...私はDojoウィジェットについてあまり気づいていません....だから、Dojoウィジェットを使用してEditorDescriptorを作成するための良いリンクを共有することができれば...私。または任意のチュートリアルを共有したいと思います。 – user1641519

+0

ここでいくつかの例があります:https://tedgustaf.com/blog/dojo(PropertyListとまったく同じユースケースではありませんが、うまくいけば、あなたは正しい方向にスタートすることができます)。 –

+0

Episerverネイティブエディタのソースコードを見るために、UIソースをダウンロードするためにnugetコマンドを使用するだけでよいですか? 多くのthnks – user1641519

0

こんにちは@TedNyberg - あなたはのpropertylistの開発のいずれかの洞察力を持っており、彼らは道場 -wayを介さずにカスタムな方法で属性をレンダリングすることを可能にする場合はできますか?シンプルコレクションToStringメソッド-ブツ-UIHint:っぽいがいいだろう...;)

関連する問題