Пользовательские атрибуты HTML на SelectListItems в MVC2? - PullRequest
3 голосов
/ 20 мая 2010

Мне нужно добавить пользовательские атрибуты HTML, в частности, классы или стили, к тегам параметров в выборках, созданных с помощью Html.DropDownFor ().я не могу понять, что мне нужно сделать, чтобы получить то, что мне нужно для работы.

Предполагая, что у меня есть список цветов, для которых я генерирую выпадающий список, где значение параметра является идентификатором цветаа текст - это имя ... вот что я хотел бы видеть в выводе:

<select name="Color">
   <option value="1" style="background:#ff0000">Red</option>
   <option value="2" style="background:#00ff00">Green</option>
   <option value="3" style="background:#0000ff">Blue</option>
   <!-- more here -->
   <option value="25" style="background:#f00f00">Foo Foo</option>
</select

>

Ответы [ 2 ]

3 голосов
/ 20 мая 2010

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

1 голос
/ 25 мая 2010

В итоге я создал собственный шаблон редактора.

В основном я создал .ascx в папке / Views / Shared / Editors под названием "ColorSelect.ascx"

Затем внутри этого .ascx я добавил следующее:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Int64>" %>
<%var colors = ViewData["Colors"] as ColorTable;
  var name = Html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(String.Empty);
  var id = Html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(String.Empty);
%>
  <select name="<%=name %>" id="<%=id %>">
  <%foreach(var color in colors) {%>
    <option value="<%=color.Id %>" style="background:<%=color.Hex%>;"<%if(color.Id == Model) { %> selected="selected"<%} %>><%:color.Name %></option>
  <%} %>  
  </select>

в моем представлении (.aspx) я сделал это:

<%=Html.EditorFor(x => x.ColorId, "ColorSelect", new { Colors = Model.ColorTable })%>

Надеюсь, это поможет любому, кто столкнется с той же проблемой, что и я.

...