2

ViewData を使用して List<string> をビューに渡しています。

// Controller:
ViewData["myList"] = new SelectList(new List<string>(new[] "AAA", "BBB", "CCC" }));

この List を使用して、ListBox にデータを入力します。

// View:
@Html.ListBox("myList")

投稿時に、次のように選択したアイテムを取得します。

// Controller:
string myList = form["myList"]

ここまでは順調ですが、選択したアイテムはすべて Post でクリアされます。
選択したアイテムをリクエスト間で保持するにはどうすればよいですか?

4

4 に答える 4

1

MVC には viewstate や controlstate などのメカニズムがないため、データは要求間で自動的に永続化できません。そのため、リクエストごとに、配信したいページを作成する必要があります。選択したアイテムを取得したときのポストでは、次のロードのために選択されるビューに値を送信する必要があります。

これは、作業コードを入手できるリンクです。

于 2013-10-03T19:46:32.797 に答える
0

データをセッション オブジェクトに追加できます。

Session["myList"] = your List<string>

セッションから引き戻す必要がある場合は、...

List<string> myList = (List<string>)Session["myList"];

あなたのコードを使用して、

var selectList = new SelectList(new List<string> {"AAA", "BBB", "CCC"});
Session["myList"] = selectList; 

次に、コントローラーでViewDataに割り当てたい場合...

ViewData["myList"] = (SelectList)Session["myList"]; //may not need the cast.

@Html.ListBox("myList")
于 2013-10-03T20:32:56.403 に答える
0

リストボックスを使用している場合、つまり複数選択できる場合は、MultiselectList を使用する必要があります

ViewData["myList"] = new MultiSelectList(new List<string>(new[] "AAA", "BBB", "CCC" }));
于 2013-10-03T19:41:09.300 に答える