0

这个问题与我发布的一个没有得到回答的问题有关:How to do batch row updates using jQuery Datatables and ASP MVC

我正在使用jQuery datatablesand 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在帖子中始终为空。

单击提交按钮后,如何将所有数据表的数据放入我的操作方法中?

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.Action 助手而不是 Url.Content 来生成控制器操作的 url。这将考虑您的路线定义。硬编码你的网址总是不好的。

此外,为了使其正常工作,请确保您尊重standard naming conventions输入字段的 ,以便默认模型绑定器能够将请求反序列化为字符串数组。

于 2013-02-22T12:49:05.687 回答