【问题标题】:Retrieving all the cell data from a jQuery datatable on post在发布时从 jQuery 数据表中检索所有单元格数据
【发布时间】:2013-02-22 12:44:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    您忘记通过从 .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,以便默认模型绑定器能够将请求反序列化为字符串数组。

    【讨论】:

    • 谢谢。看看我上面的 HttpPost 操作方法,前端显示我的成功弹出窗口,但它没有点击我的操作方法。为什么会这样?
    • 我正在尝试回发网格中通过 AJAX/JSON 调用加载的所有值。这就是我使用string[] data的原因。
    • 我得到了用于输入文本框的名称。但是在处理表格数据时,我无法使用 HTML5 为 TABLE 和 TD 添加名称。现在我该怎么做?它没有捡起它。
    • 为什么要为 TABLE 和 TD 元素添加名称属性?这没有任何意义。应将 name 属性添加到您尝试将其值发送到服务器的输入字段中。另一方面,如果您的表中没有任何输入字段并且想要发送一些静态数据,那么这是一个完全不同的故事。
    • 我有一个 HTML 表格,我想获取表格中的值。我该怎么做呢?我有显示的表格,但是当我使用上面的代码时,它并没有使用其中的数据来触发我的操作方法。名字部分来自Phil的文章。
    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多