【问题标题】:Passing a DataTable object in Javascript to controller将 Javascript 中的 DataTable 对象传递给控制器
【发布时间】:2015-03-17 19:14:39
【问题描述】:

我在 *.aspx 页面中有一个对 javascript 函数(在其他地方定义)的调用,该函数以 object 作为参数...

myPage.aspx

<script type="text/javascript">
    BuildTable("Results/TableList/", "TableTitle",  {<%: Model.DataTable%>});
    refreshTable(sortTable["tbl-div_id"]);
</script>

scripts.js

//global
var sortTable = {};

function BuildTable(url, title, args)
{
   var myTable = new Object();
   myTable.postBackUrl = url;
   myTable.Title = title;
   myTable.args = (args != undefined) ? args : new Object();
   sortTable[<index>] = myTable;
 }

 function sortTable(selectedTable)
 {
    $.ajax({
        url: selectedtable.postBackUrl,
        data: selectedtable.args,
        sucess: function.....
        });
  }

postBackUrl - 在控制器中

[Authorize]
 public ActionResult TableList,<params>, DataTable values)
 {
     ...
     //`values` comes back a new object, there are no colmns defined, 
 }

我可以在myPage.aspx 中看到为&lt;%:Model.DataTable%&gt; 定义的列和行,但是一旦我进入javascript 调试器,我就无法识别该对象。

问题

如何确保 aspx 页面将整个 DataTable 对象发送到 javascript 并将 javascript 发送回服务器控制器,以便我可以操作值?

更新

如果有办法从视图直接进入控制器,我也愿意

【问题讨论】:

  • 这个&lt;:不应该是这个&lt;%Model.DataTable%&gt;
  • 查看编辑....还是什么都没有

标签: javascript c# jquery asp.net datatable


【解决方案1】:

首先,&lt;%:Model.DataTable%&gt; 上有一个错字,这应该是&lt;%=Model.DataTable%&gt; 看看是否有帮助,否则你可以做的是将该对象作为隐藏元素放入可能是带有 ID 的输入标签并传递该元素对象借助 javascript document.getElementById(id of your hidden Input) 看看是否有帮助。

【讨论】:

  • 和 叫什么?我想了解更多关于它们的信息......另外,这没有用,我仍然没有看到 javascript 中的任何内容
  • 那些叫做A scriptlet;它是当用户请求页面时运行的 Java 代码片段。如果这不起作用,我会尝试第二个选项,它有一个隐藏表并通过 javascript getElementById(id of the element); 获取该元素的引用
  • 我最终希望将该对象从 javascript 发送到控制器,但 javascript 是无类型的,不是吗?那么这不会导致我失去对象的所有成员吗?
  • getElementById(id of the element); 应该可以获取表的所有成员。
  • 我没有尝试使用 HTML 中的值,没有与元素关联的 ID,我正在尝试获取模型的成员
【解决方案2】:

我最终使用了 Session[] 变量。

myPage.aspx

 <%
    Session["myTable"] = Model.DataTable;
 %>

postBackUrl - 在控制器中

 DataTable table = (DataTable)HttpContext.Session["myTable"];

此时,table 有了 Model 的值,我不必在 javascript 中处理复杂的数据对象

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 2021-09-24
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多