0

選択リストの各オプションにカスタムデータ属性を追加したいのですが、これはjQuery.data()または.attr()で実現できます。

ただし、次のhtmlヘルパーを使用して選択リストを設定しています。

@Html.EditorFor(x => x.MySelect, MVC.Shared.Views.EditorTemplates.KeyValuePairSelectList, new { SelectListOptions = Model.MySelectList})

EditorForのnew{}メソッドでそれを行う方法はありますか?

4

2 に答える 2

4

以下に説明する2つの方法のいずれかを使用してみます。

1.カスタムエディタテンプレートを使用する

MyModel配列をドロップダウンリストとプロパティとして表示し、 <option>要素のデータ属性として表示するSomeProperty1とします。SomeProperty2

    public class MyModel
    {
      public int Id { get; set; }
      public string Value { get; set; }
      public string SomeProperty1 { get; set; }
      public string SomeProperty2 { get; set; }
    }

  // CustomSelectList.cshtml (editor template)
  @model MyModel[]

  <select>
  @foreach (var i in Model)
  {
    <option name="@i.Id" data-attr-1="@i.SomeProperty1" data-attr-2="@i.SomeProperty2">@i.Value</option>
  }
  </select>

2.テンプレート化されたかみそりのデリゲートを使用する

    public static class RazorExtensions
    {
      public static HelperResult List<T>(this IEnumerable<T> items,
        Func<T, HelperResult> template)
      {
        return new HelperResult(writer =>
        {
          foreach (var item in items)
          {
            template(item).WriteTo(writer);
          }
        });
      }
    }

  // Model is MyModel[]
  <select>
  @Model.List(@<option name="@item.Id" data-attr-1="@item.SomeProperty1" data-attr-2="@item.SomeProperty2">@item.Value</option>)
  </select>
于 2012-05-22T13:34:57.577 に答える
0

これを行うには、独自のエディター拡張機能が必要になる場合があると思います。

于 2012-05-21T10:45:43.423 に答える