1

元の機能を保持するような方法で DropDownListFor を拡張しようとしていますが、指定された選択された値が Null の場合、「アイテムを選択する」などの SelectListItem リストに新しい値を追加する機能を追加します。

どうやってそれをしますか?

編集:(最初ははっきりしていませんでした)

デフォルトの DropDownListFor 動作を見ると、拡張機能は SelectItems のリストと「選択された」値を取得します。私のアプリでは、「選択された」値が Null の場合があるため、SelectItems リストからオプションが選択されていません。「選択した」値が Null の場合、DropDown が「項目を選択」などの新しい値を自動的に追加し、それを「選択済み」として選択するように、デフォルトの動作を変更したいと思います。

今は良くなっていることを願っています:)

ありがとう

4

1 に答える 1

2

よし、やった!今後の参考のために、ここに解決策があります:

DropDownListFor の拡張メソッドを作成しました。

public static MvcHtmlString KeywordDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression,
                                                   IEnumerable<SelectListItem> selectList, object htmlAttributes)
{
    Func<TModel, TValue> method = expression.Compile();
    string value = method(helper.ViewData.Model) as string;

    if (String.IsNullOrEmpty(value))
    {
        List<SelectListItem> newItems = new List<SelectListItem>();
        newItems.Add(new SelectListItem
        {
            Selected = true,
            Text = Strings.ChooseAKeyword,
            Value = String.Empty
        });
        foreach (SelectListItem item in selectList)
        {
            newItems.Add(item);
        }

        return helper.DropDownListFor(expression, newItems, htmlAttributes);
    }

    return helper.DropDownListFor(expression, selectList, htmlAttributes);
}
于 2013-10-24T08:58:09.633 に答える