2015-10-07 1 views
0

Enum КлассMVC вопрос атрибут 5 Дисплей

public enum DataReleaseChoice 
{ 
    Accept, 
    Decline, 
    [Display(Name = "Retrieve your application")] 
    Continue 
} 

На мой взгляд:

<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Accept" class="btn btn-primary" /> 
<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Decline" class="btn btn-primary" /> 

Все, что я пытаюсь сделать, это добавить строку для кнопки нового «Продолжить», но он должен показать значение DisplayAttributes («Получить ваше приложение»)

Я рассмотрел пример, приведенный в How to get the Display Name Attribute of an Enum member via MVC razor code?, но изо всех сил стараюсь использовать его в режиме Razor. Я могу отобразить значение в контроллере, используя следующий код,

var displayAttribute = PAI.Web.Utilities.EnumHelper<DataReleaseChoice>.GetDisplayValue(DataReleaseChoice.Continue); 

но когда я использовать то же самое с точки зрения бритвы следующим образом,

<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@PAI.Web.Utilities.EnumHelper<DataReleaseChoice>.GetDisplayValue(DataReleaseChoice.Continue)" class="btn btn-primary" />, 

я получаю ошибку

Using the generic type 'EnumHelper<T>' requires 1 type arguments 

Я использую MVC 5.2.3 и читаю на других форумах, что MVC 5 поддерживает DisplayAttribute для Enums из коробки. Я изо всех сил стараюсь использовать его.

ответ

1

Используйте этот метод расширения, чтобы получить DisplayName для перечисления в контроллере или Вид:

public static class EnumExtension 
{ 
    public static string GetDisplayName(this Enum value) 
    { 
     var enumType = value.GetType(); 
     var enumName = Enum.GetName(enumType, value); 
     var member = enumType.GetMember(enumName)[0]; 

     var attributes = member.GetCustomAttributes(typeof (DisplayAttribute), false); 
     var outString = string.Empty; 

     outString = ((DisplayAttribute) attributes[0]).ResourceType != null 
      ? ((DisplayAttribute) attributes[0]).GetName() 
      : ((DisplayAttribute)attributes[0]).Name; 

     return outString; 
    } 
} 

<input name="@Html.NameFor(model => model.DataReleaseAuthorization)" type="submit" value="@DataReleaseChoice.Continue.GetDsiplayName()" class="btn btn-primary" />,

+0

большое спасибо! – Sekhar