0

リストが ViewBag にある場合、ドロップダウン リストに選択した項目を保持させるにはどうすればよいですか?

この最初の DropdownList は正常に動作します。

  @Html.DropDownList("searchString", Model.Enrollments.FirstOrDefault().WeekDays.Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString(), Selected = s.ToString().Equals(selectedItemFromList) })) 

そして今、別の DropdownList が必要ですが、モデルからリストを取得する代わりに、次のようにビュー バッグから取得しています。

@Html.DropDownList("searchString", new SelectList(ViewBag.someList, "text"), "select an item").. Again this works but I want the format like the first Dropdownlist that retains te selected value…something like this…

@Html.DropDownList("searchString", ViewBag.someList.Select(t=> new SelectListItem{ Text= t.ToString(),Value =t.ToString(),Selected =t.ToString().Equals(selectedItemFromList)}))

疑わしいビューバッグからリストを取得しているため、これは機能しません。最初の例のように、ViewBag を使用して選択したリスト項目を保持する方法はありますか?

4

2 に答える 2

0

このソリューションは、ビューではなくコントローラーに実装されていることを除いて、私のものと同じです。リストを表示することはできますが、私が望んでいたのは、ビューの再訪時に選択されたリストの選択されたアイテムを保持する方法でした。私のリストはモデル プロパティではありません。コントローラーで作成し、ビューバッグを介してビューに送信しました。最初に示した例は、モデル プロパティとしてリストにアクセスするものでした。ビューバッグを表示すると、新しいリストにアクセスできます。正常に機能する最初のリストのように構成したかったのです。私の元の投稿以来、私は解決策を見つけました。

ビューでソリューションが必要だったので、最終的には:

@Html.DropDownList("theString", listofinstructors.Select(tch => new SelectListItem { Text = tch.ToString(), Value = tch.ToString(), Selected = tch.ToString().Equals(somethingSelected) }))
于 2013-03-11T01:49:12.393 に答える
0

より良い方法はViewBag、コントローラーアクションで初期化することです...

コントローラ

ViewBag.someList = Model.Enrollments.FirstOrDefault().WeekDays
                   .Select(s => new SelectListItem 
                   { 
                        Text = s.ToString(), 
                        Value = s.ToString(), 
                        Selected = s.ToString().Equals(selectedItemFromList)
                   }

見る

@Html.DropDownList("someList", ViewBag.someList as SelectList, "select one")

コントローラー側で選択した値を初期化できます。

例については、こちらを確認してください...

于 2013-03-04T15:59:26.560 に答える