asp.netWebアプリケーションに5つのページがあります。最初のページに情報を入力し、[次へ]をクリックしました。次のページに移動し、このページに情報を入力します。このプロセスを5ページ続けます。5ページ目の[送信]ボタンをクリックする前に、レビューボタンをクリックして前のすべてのページに入力したすべての情報を確認する必要があります。これはどうですか?plsアドバイス。
3 に答える
手順を進めながらデータベースにデータを保存し、最後の手順でデータを取得できます。代わりに、セッションに保存することもできます。
確かに、このシナリオを実装する方法は他にもありますが、アイデアは、何らかの方法でデータを永続化し、最終ステップでそれを取得することです。
個人的には、あなたはこれについて間違った方向に進んでいると思います。ページからページへデータを渡すと、あらゆる種類の問題が発生します。
1 つのページでこれを実現する方法はいくつかあります。5 つの個別のコントロールを作成し、すべてを 1 つのページに配置して (それらが大きすぎてページの読み込みが遅くならない場合)、ユーザーが表示する内容に応じて適切なコントロールを表示することができます。たとえば、[次へ] をクリックすると、現在のコントロールの表示可能なプロパティが false になり、次のコントロールが表示されます。次に、プロセスの最後で [完了] をクリックすると、各コントロールから入力されたデータにアクセスできます。コントロール内に、設定されたクラスを返すか、参照渡しの機能を作成することもできます (ここでは説明しません)。ここまで)。
Views の使用を調べることもできます。これは、単一のページに実装できる別の方法です。
複数のページを使用することに固執している場合は、データをデータベースに一時的に保存し、最終ページでセッションから ID を取得して、最終的にすべてを 1 つに保存することができます。ただし、状況にもよりますが、これはお勧めしません。フォームの半分を記入して後日続行できるようにする場合は、データベース方式をお勧めしますが、完了時にデータを保存するだけの場合は、半分完了した冗長データが大量に発生します。この方法を使用します。
ソリューションは、使用しているフレームワークとメソッドに完全に依存します。ASP.Net を使用する場合は、MVC3 が本当に最適な方法であると思うので、ASP.Net MVC3 ソリューションでお手伝いします。
- ユーザーが「次へ」ボタンをクリックすると、JavaScript / jQuery Ajax メソッドを使用して部分ビュー (次のステップの HTML を含む) をロードするか、jQuery の show / hide 関数を使用して次のステップを表示します。
- フォーム データを 1 つの html フォーム タグ (または少なくとも 1 つの holder-div) 内に保持します。
- 最後のステップで情報を送信する必要がある場合は、単一の jQuery シリアル化呼び出しで情報を収集し、ASP.Net レシーバーに送信するだけです。
一部のコード スニペット:
Razor ビュー エンジンから部分ビューを表示する:
@Html.Partial("/Views/Instance/_General.cshtml", Model)
jQuery を介して部分ビューを読み込む - 詳細については、http://api.jquery.com/category/ajax/を参照してください。
@Html.Partial("/Views/Instance/_General.cshtml", Model)
jQuery を使用してサーバーにデータを投稿します。
$("#submit-button-id").click(function () {
var data = $("#form-id").serialize();
$.ajax({
url: "/Example/Save",
type: "POST",
data: data,
cache: false,
success: function (success) {
if (success) {
// things worked out just fine..
}
else {
// present some kind of error..
}
}
});
});