CheckboxList using Enum
References:
- http://joelabrahamsson.com/enum-properties-with-episerver/
- http://world.episerver.com/blogs/Linus-Ekstrom/Dates/2013/12/SingleMultiple-selection-in-EPiServer-75/
My Code
public class EnumMultipleSelectionFactory<TEnum> : ISelectionFactory { public IEnumerable<ISelectItem> GetSelections( ExtendedMetadata metadata) { var values = Enum.GetValues(typeof(TEnum)); List<ISelectItem> items = new List<ISelectItem>(); foreach (var value in values) { items.Add(new SelectItem { Text = GetValueName(value), Value = value.ToString() }); } return items; } private string GetValueName(object value) { var staticName = Enum.GetName(typeof(TEnum), value); string localizationPath = string.Format( "/property/enum/{0}/{1}", typeof(TEnum).Name.ToLowerInvariant(), staticName.ToLowerInvariant()); string localizedName; if (LocalizationService.Current.TryGetString( localizationPath, out localizedName)) { return localizedName; } return staticName; } } public class EventItemPage : SitePageData { public enum EventCategoryValues { Arts, Business, Community, Festivals, Kids, Recreation, Sports } [Display( GroupName = SystemTabNames.Content, Order = 1030)] [SelectMany(SelectionFactoryType = typeof(EnumMultipleSelectionFactory<EventCategoryValues>))] public virtual string EventCategories { get; set; } }
Comments