2015-08-24 45 views
2

我有一个属性,它允许用户选择多个枚举值,并在此刻这适用于将信息保存到数据库和使用它。但是,它似乎没有正确地将属性值读回编辑UI。如何支持为EPiServer属性选择多个枚举值?

我认为有某种类型的问题与枚举导致SelectMany值不按照您的预期设置。

我有以下枚举:

public enum Skills 
{ 
    People, 
    IT, 
    Management, 
    Sales, 
} 

而下面ISelectionFactory

​​

然后,我有我已经加入到合金演示的ContactPage模型的属性。

[SelectMany(SelectionFactoryType = typeof(EnumSelectionFactory<Skills>))] 
    public virtual string EmployeeLevels { get; set; } 

有没有人知道如何解决这个问题?

回答

1

设置底层值类型...

namespace TestSite.Business.EditorDescriptors 
{ 
    using EPiServer.Shell.ObjectEditing; 

    public class EnumSelectionFactory<TEnum, TUnderlying> : ISelectionFactory 
    { 
     public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata) 
     { 
      var values = Enum.GetValues(typeof(TEnum)); 

      return (from TEnum value in values select new SelectItem { Text = this.GetValueName(value), Value = Convert.ChangeType(value, typeof(TUnderlying)) }).OrderBy(x => x.Text); 
     } 

     private string GetValueName(object value) 
     { 
      return Enum.GetName(typeof(TEnum), value); 
     } 
    } 
} 

...用一个字符串类型的模型来实现......

[SelectMany(SelectionFactoryType = typeof(EnumSelectionFactory<Skills,string>))] 
public virtual string EmployeeLevels { get; set; } 
2

似乎是一个错误。请报告给EPiServer。

+0

谢谢,我已经给他们发邮件,让我们看看他们说什么:)。 –