2009-07-07 2 views
0

c#(asp.net)動的に作成されたコントロールからユーザーが入力したデータをセッション状態に保存する方法はありますか?

私はプログラムでいくつかのドロップダウンリスト(乱数)を作成しています。 ユーザーは各リストから特定の値を選択し、ユーザーが選択した値を保存する必要があります。

ボタンのクリックイベントを使用してセッション状態にデータを保存しようとすると、ドロップダウンリストオブジェクトが作成されていないと表示されます。 (明らかに私はIsPostBackのページロードイベントのドロップダウンリストを作成しています)

セッション状態のデータをIsPostBackのページロードイベントに保存しようとすると、それぞれから最初の値しか得られませんリスト。 (ポストバック後にページを再作成すると、ドロップダウンリストが再作成され、ユーザーが入力したデータは失われます)。

ボタンをクリックしたときに、ドロップダウンリストからユーザーが選択した値を保存するにはどうすればよいですか? 私はコードビハインドファイルでこれをやっています。

+0

ページはどのように見えるのですか?ページをレンダリングし、JavaScriptを使用してドロップダウンを作成しているのですか?または各選択項目にそれらを作成していますか? –

答えて

0

に従ってかなり複雑で困難しまい、あなたはすべてのポストバックであなたのDropDownListコントロールのすべてを再作成する必要があります。さらに、を作成してから状態に戻す必要があります。これは、ページのロードイベントの "under!IsPostBack"がすでに遅すぎることを意味します。それをPage Initに移動します。

+0

ああ、ok。私はページのinitでコントロールを作成します。ボタンクリックイベントが発生すると、各ドロップダウンリストオブジェクトのインスタンスが存在します。実際には合計で2ページサイクルを使用すると思われます。 –

0

すべてのポストバックのすべてのドロップダウンを再作成する必要があります。

0

個人的に(MVCに切り替えることはできません)、私はポストバックを取り除き、標準のHTTP POSTリクエストから直接値を読み取ることを検討します。

ポストバックでダイナミックなコントロールの実装は、多くの場合、ジョン・サンダースが言ったように

+0

true。私は今、ページのライフサイクルをもう少し詳細に読んでいます。私はMVCとhttpの投稿に行く前に、それはしばらく時間がかかるだろうオンラインデベロッパーにはまだ新しいです。 –

+0

あなたがオンラインデベロッパーに慣れていないなら、WebフォームではなくMVCを習得することをお勧めします。 –

関連する問題