Необходимо отобразить список флажков на основе перечисления - PullRequest
3 голосов
/ 08 сентября 2011

Мне нужно отобразить список флажков, по 3 на строку строки html.

Метка и значение каждого флажка будут получены из перечисления.

Как лучше всего построитьэто и отобразить его в веб-формах?

Я имею в виду просто использование литерального элемента управления и создание элементов управления внутри объекта htmltable.

1 Ответ

4 голосов
/ 08 сентября 2011

Я бы рассмотрел шаблон декоратора с данными.

 public enum MyEnum
 {
     [Description("Display Text")]
     SomeEnumValue = 1,

     [Description("More Display Text")]
     AnotherEnumValue = 2
 }

Затем вы создадите метод, который получает эти данные, например:

public IEnumerable<ListItem> GetListItemsForEnum<EnumType>() where EnumType : struct
{
    if (!typeof(EnumType).IsEnum) throw new InvalidOperationException("Generic type argument is not a System.Enum");
    var names = Enum.GetNames(typeof(EnumType));

    foreach (var name in names)
    {
        var item = new ListItem();
        var fieldInfo = typeof(EnumType).GetField(name);
        var attribute = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault(x => x is DescriptionAttribute) as DescriptionAttribute;
        if (attribute != null)
        {
            item.Text = attribute.Description;
            item.Value = Enum.Parse(typeof(EnumType), name).ToString();
            yield return item;
        }
    }
}

Затем вы можете просто вызвать этот метод для любого перечисления с атрибутами description и получить IEnumerable<ListItem> использовать при связывании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...