Как я могу расширить помощники DropCownList / ListBox MVC2 для включения пользовательских атрибутов в элементы выбора? - PullRequest
1 голос
/ 23 ноября 2010

Я застрял на том, что, как я думал, будет очень простой задачей в ASP.Net MVC2.

Мне нужно применить цвет фона к определенным элементам SELECT OPTION.Для создания выпадающих списков мы используем html-помощники Html.DropDownList и Html.ListBox, и в идеале я хотел бы продолжить их использование, поэтому мне не нужно повторно связывать выбранные элементы из коллекции форм, когдаФорма отправлена ​​и отображается повторно.

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

var setOfOptions = question.AnswerList.Values.Select(x => new SelectListItem(){
                             Value = x.ID.ToString(),
                             Text = x.Caption + " - " + x.Style,
                             Selected = question.Answers.Contains((object)x.ID)
                        });
answerlistHtml = html.DropDownList(question.GetQualifiedId(), setOfOptions, "Please select...", new { @class = "superselect disabled" }).ToHtmlString();

Итак, здесь мы превращаем коллекцию наших объектов "AnswerListValue" в IEnumerable и генерируем из этого HTML-код SELECT.Однако это не дает мне способа получить x.Style в элемент SELECT OPTION - потому что в SelectListItem нет свойства HtmlAttributes.Вот как я хочу, чтобы SELECT выглядел как ...

<select id="whatever" name="whatever">
   <option value="1" class="mystyle1">val1</option>
   <option value="2" class="mystyle2">val2</option>
   <option value="3" class="mystyle3">val3</option>
</select>

Очевидный ответ здесь заключается в создании моего собственного объекта SelectListItemWithAttributes - но я не могу понять, как создать объект DropDownListWithAttributes, даже после изученияисходный код MVC2.

Что бы вы сделали в этой ситуации?

1 Ответ

0 голосов
/ 23 ноября 2010

Вам не нужно «создавать» своего собственного помощника DropDown.Вам нужно будет расширить помощник по умолчанию DropDown.Это довольно просто, и это лучшее, что есть в MVC.

Я бы посоветовал вам проверить ответ Создание SelectListItem с атрибутом disabled = "disabled" , чтобы получить представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...