3

カスタム 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

>

4

2 に答える 2

3

DropDownFor組み込みのヘルパーでこれを行うことはできないと思います。それに合わせて独自の SelectListItem クラスとヘルパーを作成する必要があります。この同様のリクエストが役立つ場合があります。

于 2010-05-20T14:11:52.877 に答える
1

独自の共有エディター テンプレートを作成することになりました。

基本的に、「ColorSelect.ascx」という/Views/Shared/Editorsフォルダーの下に.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 })%>

これが、私が抱えていた同じ問題に遭遇した他の人に役立つことを願っています.

于 2010-05-25T18:08:02.567 に答える