2016-11-06 1 views
0

У меня есть список объектов, которые я хочу связываться с ретранслятором (не обязательно отображается в виде таблицы), используя следующий код:Web Forms - ретранслятора Enum Дисплей Значение

C# код объекта:

public enum CategoryEnum 
{ 
    [Description("Entertainment and Film")] 
    EntertainmentFilm = 1, 
    [Description("Audio and Music Cover")] 
    AudioCover = 2, 
    [Description("Others")] 
    Others = 0 
} 

public class Document 
{ 
    public string Name { get; set; } 
    public CategoryEnum Category { get; set; } 
} 

Web Forms код:

 <asp:Repeater id="listDoc" runat="server" > 
      <ItemTemplate> 
       <tr> 
        <td><asp:Label id="lblName" runat="server" Text='<%#Eval("Name") %>'/></td> 
        <td><asp:Label id="lblCategory" runat="server" Text='<%#Eval("Category") %>'/></td> 
       </tr> 
      </ItemTemplate> 
     </asp:Repeater> 

есть ли способ, чтобы отобразить результаты в виде

Наименование | Категория
music1 | Аудио и музыка Обложка
movie1 | Развлечения и кино
movie2 | Развлечения и кино
series1 | Развлечения и кино
спорт | Другие

Вместо:

Имя | Категория
music1 | AudioCover
movie1 | РазвлеченияFilm
movie2 | РазвлеченияFilm
series1 | РазвлеченияFilm
спортивные | Прочие

Или есть лучший подход для этого?

Заранее благодарен!

ответ

0
public static class EnumHelper<T> 
    { 
     public static string GetEnumDescription(string value) 
     { 
      Type type = typeof(T); 
      var name = Enum.GetNames(type).Where(f => f.Equals(value, StringComparison.CurrentCultureIgnoreCase)).Select(d => d).FirstOrDefault(); 

      if (name == null) 
      { 
       return string.Empty; 
      } 
      var field = type.GetField(name); 
      var customAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false); 
      return customAttribute.Length > 0 ? ((DescriptionAttribute)customAttribute[0]).Description : name; 
     } 
    } 

var movieDesc = EnumHelper<CategoryEnum>.GetEnumDescription("EntertainmentFilm"); 
var audioDesc = EnumHelper<CategoryEnum>.GetEnumDescription("AudioCover"); 
var othersDesc = EnumHelper<CategoryEnum>.GetEnumDescription("Others"); 

Выше приведен пример, показывающий, как вы можете получить описание из своего значения Enum. Надеюсь, это поможет

0

Вы можете добавить этих 2 участников в свой «Документ». Один из них - это свойство только для чтения, которое получает значение категории и вызывает второй элемент, статическую функцию, которая использует отражение, чтобы получить описание перечисления:

public string CategoryDescription 
    { 
     get 
     { 
      return GetEnumDescription(this.Category);         
     } 
    } 

public static string GetEnumDescription(Enum value) 
    { 
     FieldInfo fi = value.GetType().GetField(value.ToString()); 

     DescriptionAttribute[] attributes = 
      (DescriptionAttribute[])fi.GetCustomAttributes(
      typeof(DescriptionAttribute), 
      false); 

     if (attributes != null && 
      attributes.Length > 0) 
      return attributes[0].Description; 
     else 
      return value.ToString(); 
    }