2016-01-07 6 views
3

У меня есть модель, которая имеет свойство string и свойство enum.mvc DisplayName или Display (Name = ...) в зависимости от другого свойства модели

Я хочу ярлык, поэтому DisplayName будет отличаться в зависимости от значения свойства enum, например.

public class DisplayItRight 
{ 
    public TypeEnum Type { get; set; } 

    DisplayName(Type == TypeEnum.Apple ? "Good" : "Bad") 
    public string GotIt { get; set;} 
} 

Есть ли способ сделать это?

+0

вы можете проверить мой ответ ниже. возможно, ваш собственный атрибут может решить проблему. Было бы возможно расширить DisplayName только потому, что дисплей закрыт –

ответ

1

Похоже, этот код будет работать только Тип конструкции:

public enum MyEnum 
{ 
    First, 
    Second 
} 

public class LoginViewModel 
{ 

    const MyEnum En = MyEnum.First; 

    [Required] 
    [DataType(DataType.Password)] 
    [Display(Name = (En == MyEnum.First ? "Password" : "aaa"))] 
    public string Password { get; set; } 
} 

Там должно быть возможно второй вариант с вашей собственной реализации отображаемое_имя

public enum MyEnum 
{ 
    First, 
    Second 
} 

public MyDisplayNameAttribute : DisplayNameAttribute 
{ 
    public MyDisplayNameAttribute (MyEnum en, string text1, string text2) : base (CorrectName (en, text1, text2)) 
    {} 

    public static string CorrectName (MyEnum en, string text1, string text2) 
    { 
     return en == MyEnum.First ? text1 : text2; 
    } 
} 

public class LoginViewModel 
{ 

    const MyEnum En = MyEnum.First; 

    [Required] 
    [DataType(DataType.Password)] 
    [MyDisplayName(MyEnum.Second, "password1", "password2")] 
    public string Password { get; set; } 
} 

Однако я не чувствую что оба решения лучше, чем добавление какой-либо метки в ваш ViewModel

 Смежные вопросы

  • Нет связанных вопросов^_^