0

MVC を使用して、私は通常、カスタム作成されたモデル クラスに対して完全に機能するカスタム表示/エディター テンプレートを多数作成します。

ただし、ドロップダウン (要素の選択) のスタイル設定方法に制限があるため、別の要素セットを標準に出力するスタイルをいくつか作成しました。

@Html.DropDownListFor() からの出力を適切にオーバーライドして、ソリューションのすべてのドロップダウンが変更されるようにする方法を知っている人はいますか? これに関するオンラインのリソースはありますか?

メソッド自体は System.Web.Mvc.dll で見つけることができますが、それを行う際のポインター/落とし穴などのリソースが必要でした。

ありがとう、ポール。

4

1 に答える 1

0

私はこれを開始し、少なくとも非常にラフな/初期のバージョンを機能させることができました。まだすべてのインとアウトを処理するわけではありませんが、私はこれに取り組んでいきます。

これまでに行ったのは、追加のスタイリングに役立つdivでドロップダウンを囲むことだけです。まだ名前を付けたり、html属性を追加したりすることはできません。

同じことをしようとしている人のために、これまでに次のことを行っています。これは、自分のニーズに合わせて修正できます。

/// <summary>
/// Extension method for displaying a custom dropdownlist
/// </summary>
public static MvcHtmlString CustomDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IEnumerable<SelectListItem> selectList, IDictionary<String, Object> htmlAttributes)
{
    StringBuilder ItemsStringBuilder = new StringBuilder();

    foreach (SelectListItem SingleListItem in selectList)
    {
            ItemsStringBuilder.AppendLine(DropDownExtensions.ListItemToOption(SingleListItem));
    }

    TagBuilder SelectTagBuilder = new TagBuilder("select")
    {
        InnerHtml = ItemsStringBuilder.ToString()
    };

    TagBuilder OuterTag = new TagBuilder("div")
    {
        InnerHtml = SelectTagBuilder.ToString()
    };

    OuterTag.Attributes.Add("class", "styled-select");

    return MvcHtmlString.Create(OuterTag.ToString(TagRenderMode.Normal));
}
于 2012-09-27T15:58:30.467 に答える