2009-08-24 19 views
2

1ページに私は答えのtipeが異なる質問のリストを持っています。 (テクスチャボックス、チェックボックスなど)ページは動的に生成されます。私はデータベースに回答を保存する必要があります。これを行う最善の方法は何ですか?複数のフォームまたは何か他のもの? すべての回答の後にAjaxリクエストを送ることはできますが、それを達成する方法はわかりません(そのユーザーが回答を入力して次の質問に行った方法)1ページに複数のフォームを処理する方法は?

私はaspを使用しています。 net mvc with c#

答えて

1

HTTPリクエストごとに1つのフォームしか送信できないため、単純なフォームを使用して各回答フィールドに固有の名前を付けてから、サーバー上でそれをデータベースにマップします。

申請者が質問を「終了」した後で、AJAXリクエストを送信しないことをお勧めします。多くの人がすべての質問に答えて、2回目に答えを出したいと思っています。

したがって、私はまた、 "ウィザード"アプローチ(またはページあたり1つの質問)を使用することを控え、現在の回答を提出した後に次の質問をすることをお勧めします。

+0

彼はすべてのフォームのすべての情報をシリアル化して、1つのAjaxリクエストを送ることができます。 – redsquare

1

質問ごとにAJAXリクエストを使用して回答を保存したくないというAaronの回答に同意します。しかし、フォームフィールドのユーザー編集データに基づいてAJAXリクエストを発生させる必要がある状況に遭遇した場合は、 'onChange'や 'onBlur'などのJavascriptイベントをリッスンしてAJAXリクエストを発生させることができますそのイベントリスナーから取得します。

+0

フォーム全体からのぼかしではどうすればいいですか? – Ante

+0

PS:これは私の問題を解決する可能性があります – Ante

+0

フォーム全体に対してonBlurを実行することはできません。これは要素レベルのイベントです。あなたができることはいくつかあります。 onBlurイベントハンドラでは、すべてのフォームフィールドをループして値があるかどうかを調べ、AJAX呼び出しが発生した場合にのみ呼び出します。より良い選択肢は、各要素の状態を示す配列(変更されているかどうか)を設定することです。次に、各要素のイベントハンドラで、変更されたものとしてマークします。すべての要素が変更されている場合は、配列をチェックしてフォームを送信する準備が整い、AJAXリクエストを行うことができます。 – Hamman359

関連する問題