2010-03-04 6 views
4

У меня есть код, какВстраивание ASP.Net код внешних файлов JavaScript

var mySession = "<%= Session["MyID"] %>"; 
alert (mySession); 

и когда я помещаю этот код на моей странице ASPX внутри тега сценария, он отлично работает. Но он не работает во внешнем js-файле. Я не могу понять проблему.

Есть ли что-то не так в моем коде, или это похоже на это по умолчанию?

Заранее спасибо

ответ

4

стороне сервера сценариев (<%= %>) оцениваются только внутри aspx страниц. Внешний javascript - это статические файлы. Для того, чтобы достичь того, что вы ищете вы, возможно, придется объявить глобальную Js переменную внутри файла ASPX:

var mySession = "<%= Session["MyID"] %>"; 

и использовать его в своих внешних JS:

alert(mySession); 

Другой вариант заключается в использовании AJAX. Настройте скрипт на стороне сервера, который вернет требуемое значение сеанса и вызовет этот скрипт из внешнего js-файла.

+0

Если я объявляю глобальную переменную и устанавливаю значение для загрузки страницы, я не получу обновленное значение сеанса в событиях click внутри js-файла. Есть ли что-нибудь, что я могу сделать, чтобы добиться этой работы, используя ваш первый подход? – rahul

+0

Как сеанс обновляется по событиям кликов, пока вы находитесь только внутри клиентского скрипта? Вы используете UpdatePanels для отправки запросов AJAX на ваш сервер? –

+0

Нет, моя сессия истекает через определенное время, и мне нужно также проверить это. Поэтому, когда моя загрузка страницы будет иметь значение в сеансе, и когда сессия истечет, и пользователь нажмет на кнопку, мне нужно получить обновленный сеанс и проверить, что против null и выполнить соответствующее действие. – rahul

2

Предложение Дарина является лучшим, но если по какой-то причине вы не хотите использовать соглашение о передаче данных в свой внешний js-код с помощью переменных, определенных на странице aspx, вы можете фактически сделать свой внешний js-файл aspx страница. Например, вы можете назвать его «External.js.aspx» и установить ContentType = «text/javascript» в директиве @Page. Затем вы можете делать все, что ожидаете от ASP.NET, изнутри источника javascript.

Однако, обслуживание страниц aspx намного дороже, чем при использовании IIS статического файла. Если это вас не беспокоит, то этот метод может обеспечить более удобный и быстрый подход.

0

Хороший способ состоит в том, чтобы добавить все значения, которые вам нужны во внешних Js-файлах, чтобы иметь тип ввода = «скрытый» для каждого значения, которое вам нужно от aspx => js.

И на javascript window onload есть метод, который находит все введенные поля и сохраняет их в объекте JS.

Смежные вопросы