0

この質問は、回答が得られないという私が投稿した質問に関連しています: How to do batch row updates using jQuery Datatables and ASP MVC

と を使用していjQuery datatablesますASP.NET MVC 4。私が達成しようとしているのは、送信ボタンをクリックしたときに、すべてのデータテーブルのデータをコントローラーのアクションメソッドにポストバックする必要があることです。テーブル データを編集してから、この編集したテーブル データをコントローラーにポストバックする必要があり、一度にすべて処理したいと考えています。その場で行またはセルを更新したくありません。

これを行う方法がわかりません。私もこのようなことを試しましたが、これも機能していません:

これは、データテーブルにデータを入力する方法です。

$('#com-plus-components-datatable').dataTable({
     "aoColumns": [
          { "mDataProp": [0], "sWidth": "35%" },
          { "mDataProp": [1], "sWidth": "65%" }
     ],
     "bAutoWidth": false,
     "bFilter": false,
     "bLengthChange": false,
     "bPaginate": false,
     "bProcessing": true,
     "bServerSide": true,
     "bSort": false,
     "iDisplayLength": 50,
     "sAjaxSource": '@Url.Action("GetWindowsServices")'
});

これは、データテーブルデータを取得する私の試みです:

$('form').submit(function () {
     $.post("@Url.Content("~/Server/Test")",
     $('form').serialize(),
     function (data) {
          alert('success');
     }, 'json');
});

データを取得してすべての処理を行うアクション メソッド (以下の部分的なコード):

[HttpPost]
public ActionResult Test(string[] data)
{
     return View();
}

string[] dataポストでは常に null です。

送信ボタンをクリックした後、データテーブルのすべてのデータをアクション メソッドに取得するにはどうすればよいですか?

4

1 に答える 1

0

.submit ハンドラーから false を返して、フォーム送信のデフォルト アクションをキャンセルするのを忘れました。

$('form').submit(function () {
     $.post('@Url.Action("Test", "Server")', $('form').serialize(), function (data) {
         alert('success');
     });
     return false; // <!-- You need this
});

または、これを行うこともできます:

$('form').submit(function (evt) {
     evt.preventDefault(); // <!-- You need this
     $.post('@Url.Action("Test", "Server")', $('form').serialize(), function (data) {
         alert('success');
     });
});

また、Url.Content の代わりに Url.Action ヘルパーを使用して、コントローラー アクションへの URL を生成したことにも注目してください。これにより、ルート定義が考慮されます。URL をハードコードするのは常に悪いことです。

standard naming conventionsまた、これが機能するためには、デフォルトのモデル バインダーがリクエストを文字列配列に逆シリアル化できるように、入力フィールドを尊重していることを確認してください。

于 2013-02-22T12:49:05.687 に答える