Перемещение Url.Action в Jquery / JS?(MVC Web App) - PullRequest
0 голосов
/ 10 августа 2010

Среда: ASP.NET 3.5, MVC 2 Web App, в файле View Index.aspx

У меня есть следующий jqGrid (фрагмент кода):

    $("#list").jqGrid({
        url: '<%= Url.Action("GridData") %>',
        datatype: 'json',

Этово встроенной функции JS под названием populateGrid.Мне нужно переместить эту функцию из представления в ее собственный JS.Для этого мне нужно сохранить <% = Url.Action ("GridData")%> как переменную в javascript.

This:

var griddata = <%= Url.Action("GridData") %>;

не отображаетсяработать.Мне интересно, какой синтаксис я должен использовать и / или как я могу это сделать.Функция populateGrid будет вызываться несколькими страницами, поэтому она помещается в файл .js.

Ответы [ 2 ]

0 голосов
/ 10 августа 2010

Ваша проблема в том, что переменная griddata является локальной для закрытия $ (document) .ready. вам нужно объявить его вне этой области видимости как глобальный или передать его в область js. Таким образом, чтобы сделать его глобальным, вы должны сделать:

var griddata = ... // this outside the function/closure

$(document).ready(function() {});

Теперь, загрязнение глобального пространства имен всеми вашими переменными конфигурации, возможно, не лучший способ для передачи этого типа данных .... вы можете создать объект конфигурации, чтобы хранить все ваши конфигурационные переменные (со значениями по умолчанию и всеми) Ваша главная страница, поэтому она правильно инициализируется для каждой страницы ... что-то вроде:

var myAppConfig = {
   gridData : '<%= Url.Action("xxxx") %>',
   otherConfig : 'some more configuration here'
};

тогда вы можете использовать его в своих файлах js

0 голосов
/ 10 августа 2010

Добавьте несколько цитат:

var griddata = '<%= Url.Action("GridData") %>';

Должен решить вашу конкретную проблему там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...