将Javascript中的DataTable对象传递给控制器

时间:2015-03-17 19:14:39

标签: javascript c# jquery asp.net datatable

我在* .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中看到为<%:Model.DataTable%>定义的列和行,但是一旦我进入javascript debuger,我就无法识别该对象。

问题

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

更新

如果有办法从View直接进入控制器,我也会对此持开放态度

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

myPage.aspx

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

postBackUrl - 在控制器中

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

此时,表现在具有模型的值,我不必在javascript中处理复杂的数据对象