2016-08-30 101 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'编辑器来重写对象的渲染方式。确保你的UI源代码NuGet包能够查看Episerver本地编辑器的源代码。 –

回答

0

您可以创建自己的Dojo小部件,继承CollectionEditor并自定义项目的呈现方式。

然后,您将使用适用于PropertyList属性的EditorDescriptor属性指定您的自定义编辑器。

+0

感谢您的快速回复:) 最后一件事......我对Dojo小部件并没有太多的了解......所以,如果您可以共享任何使用Dojo小部件创建EditorDescriptor的好链接......那对于我。或者任何教程,你想分享。 – user1641519

+0

您会在这里找到一些示例:https://tedgustaf.com/blog/dojo(与PropertyList不完全相同的用例,但希望它能让您开始朝正确的方向发展)。 –

+0

你可以直接协助我nuget命令下载UI资源以便能够查看Episerver本地编辑器的源代码吗? 很多问题 – user1641519

0

喜@TedNyberg - 你有在对propertyList的发展有什么见解,如果他们打算使人们有可能呈现的自定义方式的属性,而不要去的道场三通?一个简单的collection-ToString-thingy-UI提示:ish会很好......;)

相关问题