jquery ajax 呼び出しを介してデータを送信する際に、ややこしい問題が発生します。基本的に、 jquery を使用して管状グリッドに画面に動的に追加されたフォーム フィールドのフォーム値は、バッチ保存コマンドで更新されません。
基本的に、データベースに保存されている現在のすべての行を表示するグリッド リストがあり、各列にはフォーム フィールドが含まれています。次に、ページの上部に別の詳細を追加する典型的なフォームがあります。値を入力し、「追加」を押します。これは jquery json ajax 呼び出しを介してデータベースに保存され、フォーム データが追加され、リスト テーブルの新しい行に反映されます。(この部分は機能します)
私の問題は、新しく追加された jquery テーブルの行内でフォームの値を変更したい場合にあります。保存ボタンが押されると、すでに作成されたテーブル行のみが再保存されます。動的行フォーム データは保存されません。update 呼び出しは、jquery ajax と ASP.NET MVC モデル バインディングを使用します。「追加」で、asp.net mvcの「部分ビュー」をjquery ajax応答に返し、$("#tablename tr:last").after(result).
私がすでに推測したことは、前述のように、動的に追加された新しい行は更新されないということです。IList<Item>新しく作成された jquery の動的に追加されたフォーム フィールドの行を除いた、項目のリスト全体を含むコントローラー アクション メソッドへの MVC モデル バインディング リストで返されるセットがあります。これが問題であり、ページの更新を実行すると、行が最初の追加時に入力された元のフォームの値に戻る理由です。
私IList<Item>の にこれらの動的に追加された行が含まれない理由はありますか? Firebug で調べると、name 属性に同じ命名規則が使用されており、すべて問題ないはずです。
グラハム。
更新 1 5 月 11:00 GMT+10: モデル バインドを IList から FormCollection に変更すると、値が表示されます。モデル バインドではなく FormCollection を使用する必要はありませんが、FormCol を介して正しく取得できるかどうかという疑問が生じます。なぜ IList モデル バインダーを使用しないのでしょうか? 配列エントリを作業項目と比較しましたが、それらはすべて同じ基準と値に適合しています。