1

これは設計/技術に関する質問です。

ASP.NET MVC を使用すると、すべてのレコードを読み取り専用の表形式で表示するマスター ビューという 2 つのビューを持つ単純なアプリケーションを簡単に作成できます。もう 1 つの詳細ビューは、新しいレコードを作成します。

私の目標は、テーブルと同じページに詳細フォームを表示することです。ユーザーがデータを入力して保存すると、ビューを切り替えたりコンテンツをリロードしたりすることなく、新しいレコードがテーブルに追加されます。基本的には、stackowerflow に新しい回答やコメントを投稿するように機能するはずです。

独自の jQuery コードを作成し、JSON を使用してコントローラー アクションと通信することで、その方法を見つけました。ASP.NET MVC でこの種の動的フォームが作成されるのは、このような方法ですか?

このアプローチでは、次の設計/拡張性の問題に直面しています。

  • jQuery を使用して新しい行をレンダリングするのは、少し雑然としています。
  • 新しいフィールドを追加する場合、調整する場所が 2 つあります。1 つはマスター ビュー、2 番目は jQuery スクリプトです。

現在、次のように新しいレコードをテーブルに追加しています。

function addQueryField() {
      // Determine the index of the next row to insert
      var index = $("tr[id^=queryRow]").size();
      // Create DOM element for table row
      var oTr = $(document.createElement("tr")).attr("id", "queryRow" + index);
      // Create DOM element for value textbox
      var oValueTextBox = $(document.createElement("input")).attr("name", "query[" + index + "].Value").attr("id", "Value"+index).attr("type", "text"); 
    });

ここで説明する手法を基本的に使用しています。

おそらくすぐに使えるソリューションがいくつかありますか?

4

1 に答える 1

1

もし私があなたなら、追加プロセスとテーブル「またはページの一部」の更新を分離します

私はこのようにやっています:

  1. クライアントが[追加]ボタンをクリックしました
  2. jQueryを介して適切な部分ビューをロードCreateし、モーダルウィンドウに表示する可能性があります
  3. クライアントがフォームに入力し、[保存]をクリックします
  4. 保存時に最初にフォームを検証し、すべてがOKの場合は、jQueryを介してフォームを送信し、ページが送信されないようにします
  5. コントローラーでPost必要な処理を実行し、エラーが発生した場合は、クライアント側のjava-scriptコードでこれらのエラーをクライアントに表示できるようにエラーをModelState返しました。JSON
  6. サーバーからエラーが返されない場合は、サーバーを再度呼び出してjQueryを介してページ「またはテーブル」の一部を更新し、全Controller Actionページビューではなく部分ビューを返します。

もっと説明が必要なことがたくさんあることは知っていますが、アイデアが明確であることを願っています

于 2012-06-10T15:14:22.113 に答える