Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 482304
            [titulo] => Description de enum com o @Html.ENumDropDownListFor, no MVC 5
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-06-11 18:20:02
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 373068
            [status] => M
            [isExample] => 
            [NomeUsuario] => João Paulo Effting
            [Apelido] => João Effting
            [Foto] => 373068_20150610183046.jpg
            [Conteudo] => A quem interessar, o @Html.EnumDropDownListFor não lista o [Description("Exemplo número 1")], mas, se usar no lugar do Description, o [Display(Name="Exemplo número 1")], no combo box, aparece o texto do Display :)

Falou! ) )

Description de enum com o @Html.ENumDropDownListFor, no MVC 5

João Effting
   - 11 jun 2014

Boa tarde,
estou iniciando meus estudos em c#.net com MVC 5, e tô com esse problema, que não estou conseguindo solucionar. Já procurei, mas não achei nenhuma resposta.
Eu vi que, com o MVC 5, a microsoft disponibilizou já, o #Html.ENumDropDownListFor (pelo que eu percebi, antigamente, as pessoas criavam seus helpers, para esse mesmo componente).
O que eu não estou conseguindo é trazer, ao invéz do item do enumerador, a Description. Eu vi que, em todos os exemplos que procurei, que o pessoal criava uns métodos (em nenhum deles, explicando), e por fim, acabei não entendendo.
Alguém sabe se, junto com esse @Html.ENumDropDownListFor que a microsoft disponilibilizou, já existe alguma forma nativa de trazer o Description? Se não, alguém teria algum tutorial que explique a forma correta de trazer eles e, implementar na View?
Exemplo:
public enum Exemplo: int
{
[Description("Exemplo número 1")]
Exemplo1 = 1,
[Description("Exemplo número 2")]
Exemplo2 = 2
}

Quando na View eu chamo o @Html.ENumDropDownListFor, passando esse enum, ele me retorna no combo "Exemplo1" e "Exemplo2", mas eu queria "Exemplo número 1" e "Exemplo número 2".
Desde já agradeço,
João Paulo

Post mais votado

João Effting
   - 11 jun 2014

A quem interessar, o @Html.EnumDropDownListFor não lista o [Description("Exemplo número 1")], mas, se usar no lugar do Description, o [Display(Name="Exemplo número 1")], no combo box, aparece o texto do Display :)

Falou!

1
|
0

João Effting
   - 12 jun 2014

Complementando, depois de ter feito o que disse acima, tive outro problema, só que agora na View, onde eu colocava o @Html.DisplayFor(MeuEnumerador), e não mostrava nem o Display(Name=""), nem o Description, só o enumerador mesmo.

Ai, achei uma solução fácil (amém): Baixei um Helper pelo NuGet chamado "Enum Helper" (ou algo do tipo .. procurei por enum só), e quase lá no final da busca, achei um helper com aquele método GetDescription já implementado e pronto pra uso.

Ai, mudei o meu código para @Html.DisplayFor(MeuEnumerador.GetDescription()) , mas, agora, dava erro. Então, depois de quebrar um pouco a cabeça e não achar resposta, simplesmente pensei em retirar o @Html.DisplayFor, e deixar só @Model.MeuEnumerador.GetDescription()

e ai, graças a uma força divina, consegui o que queria.

Sei que pode parecer coisa simples, mas eu perdi algumas horas com esse problema >.<

Então vou deixar aqui registrado, para caso alguém mais tenha esses dois problemas, ou, para caso eu esqueça haha.

Abs,
João

Joel Rodrigues
   - 12 jun 2014

Opa, João. Parabéns pela atitude e obrigado por compartilhar com todos a solução encontrada. Esse tipo de ação é muito importante para o fórum.