将 Javascript 中的 DataTable 对象传递给控制器
Passing a DataTable object in Javascript to controller
我在一个 *.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 调试器时,我无法识别该对象。
问题
如何确保 aspx 页面将整个 DataTable 对象发送到 javascript 并将 javascript 发送回服务器控制器,以便我随后可以操作值?
更新
如果有一种方法可以从视图直接转到控制器,我也愿意接受
首先,<%:Model.DataTable%>
上有一个拼写错误,应该是 <%=Model.DataTable%>
看看是否有帮助,否则你可以做的是将该对象作为隐藏元素放入可能是带有ID 并在 javascript document.getElementById(id of your hidden Input)
的帮助下传递该元素对象,看看是否有帮助。
我最终使用了 Session[] 变量。
myPage.aspx
<%
Session["myTable"] = Model.DataTable;
%>
postBackUrl - 在控制器中
DataTable table = (DataTable)HttpContext.Session["myTable"];
此时,table 现在具有模型的值,我不必在 javascript
中处理复杂的数据对象
我在一个 *.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 调试器时,我无法识别该对象。
问题
如何确保 aspx 页面将整个 DataTable 对象发送到 javascript 并将 javascript 发送回服务器控制器,以便我随后可以操作值?
更新
如果有一种方法可以从视图直接转到控制器,我也愿意接受
首先,<%:Model.DataTable%>
上有一个拼写错误,应该是 <%=Model.DataTable%>
看看是否有帮助,否则你可以做的是将该对象作为隐藏元素放入可能是带有ID 并在 javascript document.getElementById(id of your hidden Input)
的帮助下传递该元素对象,看看是否有帮助。
我最终使用了 Session[] 变量。
myPage.aspx
<%
Session["myTable"] = Model.DataTable;
%>
postBackUrl - 在控制器中
DataTable table = (DataTable)HttpContext.Session["myTable"];
此时,table 现在具有模型的值,我不必在 javascript
中处理复杂的数据对象