2

私は現在、ASP.NET Web フォームに基づいた、かなり複雑なデータ入力フォームに取り組んでいます。フォームが完成したら、ユーザーが実際にフォームを送信する前に入力を確認する機会を提供したいと考えています (また、必要に応じてデータを変更するために戻ってきます)。

フィールドの数が多いため、自動データ バインディング機能を備えた FormView コントロールを使用して、多くの面倒なコードを削除したいと考えましたが、この機能を提供する簡単な方法はないようです。

現時点では、私の現在のアプローチでは、ObjectDataSource を使用してすべてのフォーム フィールドをバインドしています。データ ソースに対して 2 つの操作モードを作成しました。1 つのモードでは、オブジェクトを一時的にユーザー セッションに保存します (読み取り専用/編集モードで後で再度取得できるようにします。これにより、レビュー/変更機能が容易になります)。2 番目のモードでは、実際にデータベースの挿入が行われます。

この時点ではかなり堅牢に見えますが、それでも私にはかなり汚れているように感じます。ウィザード/マルチビュー タイプのアプローチを使用できることはわかっていますが、そうすると、自動データ バインディングの優れた点を失うことになります (そう思いますか?)。これはかなり一般的な問題だと思いますが、これは Web フォーム環境では通常どのように行われるのでしょうか?

ありがとう!

4

1 に答える 1

3

私が現在取り組んでいるプロジェクトでは、カスタム ウィザード セットアップを使用しています (asp.net 2.0 ウィザードではありません)。これは、ウィザードが必要とするいくつかのステップで構成され、あるステップから次のステップに進むと、コードは値を最終ステップ (読み取り専用のレビュー) に保存します。ユーザーがその最後のステップに到達したら、更新が必要なステップに戻ることができます。ユーザーがウィザードを送信すると、データがデータベースに保存されます。基本的には、表示が切り替えられる一連のパネルです。

編集可能なフィールドごとに ObjectDataSource を引き続き使用できる必要があります。パネルまたはマルチビューが表示されているかどうかは、バインディングに影響しません。あるパネルから次のパネルに移動するとき、編集可能なコントロールを ObjectDataSource にバインドしたまま、(前に述べたように) 読み取り専用のステップを更新できます。変更が必要なステップに戻ると、まだバインドされているため、変更を加えて送信をクリックするか、ボタンが何であれ、ObjectDataSource を使用する必要があります。

他に何かアイデアはありますか?

于 2009-01-27T20:38:57.013 に答える