как преобразовать ключи опции int в строковые значения в представлениях asp.net mvc c # - PullRequest
0 голосов
/ 02 ноября 2010

У меня есть представление, которое отображает несколько выпадающих списков. Они построены из IDictionary.

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

Я довольно далеко с этим справился (так как мой словарь начинается с 0), но он не совсем работает.

<%= Html.Encode(Chart.TypeDictionary.ElementAt(Model.iType)) %>

это возвращает это

[Public, 0]

Предположительно, я могу просто получить значение слева?

Есть ли у кого-нибудь лучшее решение для этого, а также какой лучший способ сделать это, когда у вас нет выпадающих.

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

1 Ответ

1 голос
/ 02 ноября 2010

Разве это не работает?

<%= Html.Encode(Chart.TypeDictionary.ElementAt(Model.iType)).Key %>

Редактировать

Без большего контекста я не могу дать вам окончательный ответ на то, что я бы рассмотрелбыть лучшим способом пойти об этом.Когда я отображаю раскрывающийся список, я часто сохраняю параметры в модели представления в форме, которая облегчит создание раскрывающегося списка.Например:

<%=Html.DropDownList("chartType", 
                     Model.ChartTypes.Select(
                         ct => new SelectListItem
                               {
                                   Selected = Model.iType == ct.Value,
                                   Value = ct.Value,
                                   Text = ct.Name
                               })%>

Однако, если вы используете ту же модель в качестве входного значения для действия вашего контроллера, это не будет работать.В этом случае я бы сохранил параметры в ViewData.Если вы представляете тип значения enum, один из вариантов - создать метод расширения, который принимает рассматриваемый тип enum вместе с текущим значением и создает для вас выпадающий список.Если вы будете следовать соглашению CamelCase в значениях перечисления, вы можете просто использовать этот метод, чтобы поставить пробел между строчными и заглавными буквами.(например, CamelCase => "Camel Case").

...