2015-03-17 2 views
0

Я имею в .aspx странице *, вызов на яваскрипте функцию (определенного в другом месте), которая принимает в качестве object в качестве параметра ...Передача DataTable объекта в JavaScript, чтобы контроллер

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%>, но как только я вхожу в яваскрипте Debuger, я не могу распознать объект.

ВОПРОС

Как я могу убедиться, что страница ASPX отправляет весь DataTable объект в Javascript и JavaScript обратно к контроллеру сервера, так что я могу затем манипулировать значение?

UPDATE

Если есть способ, чтобы перейти непосредственно к контроллеру с точки зрения, я открыт к тому, что слишком

+0

не должен этот '<:' на самом деле быть этим '<% Model.DataTable%>' – MethodMan

+0

см. Редактирование .... еще ничего – fifamaniac04

ответ

0

В результате я использовал переменную Session [].

myPage.aspx

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

PostBackUrl - в контроллере

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

в этой точке, таблица теперь имеет значение модели и я din't приходится иметь дело с сложный объект данных в javascript

0

Во-первых, есть опечатка на <%:Model.DataTable%> этом должно быть <%=Model.DataTable%> увидеть, если что помогает иначе, что вы можете сделать, это поместить этот объект в скрытый элемент в который может быть входным тегом с идентификатором и передать этот объект элемента с помощью javascript document.getElementById(id of your hidden Input), если это поможет.

+0

что такое <%: %> и <%= %>? Я хотел бы узнать больше о них ... также, это не сработало, я все еще не вижу ничего в javascript – fifamaniac04

+0

Те, которые называются сценарием; это фрагмент кода Java, который запускается, когда пользователь запрашивает страницу. Если это не работает, я бы попробовал второй вариант с скрытой таблицей и получить ссылку на этот элемент javascript 'getElementById (id элемента);' – user2325727

+0

Я в конечном итоге хочу, чтобы этот объект отправлялся с javascript на контроллер, но javascript безличен нет? так что это не приведет к тому, что я потеряю всех членов объекта? – fifamaniac04