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