【问题标题】:Why is the contents of my handsontable not posting to the controller action?为什么我的handsontable 的内容没有发布到控制器操作?
【发布时间】:2014-04-30 12:55:35
【问题描述】:

我正在尝试将我的掌上电脑的内容发送到我的控制器操作。该表功能正常,我设法调用了该操作,但该对象为空。如何将我的handsontable 的内容发布到我的控制器操作中?感谢您的所有帮助!

  <script src="../../Scripts/jquery.min.js" type="text/javascript"></script>
  <script src="../../Scripts/jquery-ui.custom.js" type="text/javascript"></script>

  <script src="../../Scripts/jquery.handsontable.full.js" type="text/javascript"></script>

  <script src="../../Scripts/numeral.sv-se.js" type="text/javascript"></script>

  <link href="../../Content/themes/base/jquery-ui.custom.css" rel="stylesheet" type="text/css" />
  <link href="../../Content/themes/base/jquery.handsontable.full.css" rel="stylesheet" type="text/css" />
  <link href="../../Content/themes/base/demo-style.css" rel="stylesheet" type="text/css" />


   <script type="text/javascript">
    $(function () {
    var $container = $("#handsonDataTable");
    var $console = $("#handsonDataConsole");
    var $parent = $container.parent();
    var autosaveNotification;
    $container.handsontable({
        startRows: 8,
        startCols: 6,
        rowHeaders: true,
        colHeaders: true,
        minSpareRows: 1,
        contextMenu: true,
   });


   var handsontable = $container.data('handsontable');

   $("button").click(function () {
        $.ajax({
            url: "/Home/TableData",
            data: { "data": handsontable.getData() }, //returns all cells' data
            dataType: 'json',
            type: 'POST',

            success: function (res) {
                if (res.result === 'ok') {
                    $console.text('Data saved');
                }
                else {
                    $console.text('Save error');
                }
            },
            error: function () {
                $console.text('Saved.');
            }
        });
    });

 </script>

     <div id="handsonDataTable"></div>
     <div id="handsonDataConsole"></div>

     <button>Click me</button>

在我的控制器中:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Mvc;

      namespace HandsonTable.Controllers
      {
           public class HomeController : Controller
           {
              public ActionResult Index()
               {
                ViewBag.Message = "Welcome to ASP.NET MVC!";

        return View();
    }

         [HttpPost]
          public ActionResult TableData(Object tabledata)
         {

                return View();
          }
      }
 }

【问题讨论】:

  • $container.handsontable({ 永远不会关闭,是错字吗?
  • 对不起,是的,这是一个错字。它已关闭,脚本运行良好。就在控制器动作中,当我检查 DataTable 动作的参数时,我得到:{datatable|{object}。
  • handsontable.getData() 是否在发送时刻返回正确的数据?将 console.log(handsontable.getData()) 放入您的代码中并从控制台/firebug 中检查它。
  • 恐怕帮不上忙了,我对asp.net不熟悉。最后一个问题是:return View(); 是否返回 json 数据?我的意思是编码,准备发送。

标签: jquery asp.net ajax json asp.net-mvc-3


【解决方案1】:

问题出在控制器上。 Ajax 请求没问题。您将需要修改此代码。尝试将其更改为返回"hello world" 或其他内容的更简单版本,并检查它是否运行(这样您就不会在使用ajax 时收到错误500)。您还可以提出与您的控制器直接相关的新问题。我对 asp.net 没有任何技能,所以我只能建议。

您可能还会发现this guide 很有用。

【讨论】:

  • 感谢 Michal 的提示...我能够将数据以逗号分隔的字符串形式发送到控制器,如下所示: data: myData = { data: handsontable.getData().toString() }.所以看来问题在于发送数据的格式。
  • 很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2020-01-03
相关资源
最近更新 更多