s yu Ответов: 1

Как получить значение переменной сеанса на другой странице aspx?


В HTML-файле я устанавливаю значение переменной сеанса с помощью JavaScrip (в котором session.js загружается из http://dreamerslab.com/blog/en/javascript-session/"):
  var ar = ['ID', 'pID', 'cID', 'name', 'type', 'access', 'desc', 'comment', 'lat', 'lon', 'contractName'];
  var monument = Session.get("monument") || {
      rec: []
  };
...
Session.set("monument", ar);

Затем нажмите кнопку, чтобы перейти на другую страницу aspx. В этом коде aspx я попытался получить значение сеанса,
var sValue = Session["monument"];

но есть
Session["monument"]
не определен.
Как можно получить значение этого сеанса? Спасибо.

Что я уже пробовал:

Как получить значение переменной сеанса на другой странице aspx?

ZurdoDev

var sValue = Session ["monument"]; это правильный способ получить его. Это означает, что он не устанавливается.

Sergey Alexandrovich Kryukov

Правильно. Это может быть просто вопрос порядка операций. Это не определено, это не должно быть проблемой.
—СА

s yu

Прежде чем я нажимаю на кнопку HTML-код для перенаправления на страницы aspx, я получить значение по сессии.вам("памятник") в открывшееся окно. Он действительно отображает именно те значения массива. Тогда Page_Load () aspx, Session["monument"] имеет значение null. Какие-нибудь дополнительные рекомендации, чтобы выяснить причину? Спасибо.

ZurdoDev

Session. get ("monument") находится в JavaScript, поэтому я понятия не имею, что он делает, и не доверяю ему.

Как вы перенаправляетесь на другую страницу?

s yu

Используя альтернативный подход, теперь я могу передать значение сеанса на другую страницу. Описание приведено ниже:
1) в 1-м aspx создайте скрытую переменную.
2) в 1-м aspx установите значение переменной сеанса;
3) в событии нажатия кнопки (в JavaScript) установите значение скрытой переменной = session variable.
4) После 3) запустите document. getElementById('<%=Button2.ClientID%>'). нажмите кнопку();
5) в коде-позади: Button2_Click(Object sender, EventArgs e) {
Сессия ["памятник"] = Хидденфилд.Ценность;
Ответ.Перенаправление ("2. aspx");
}
6) Когда 2.aspx открыт, значение сеанса["monument"] может быть восстановлено.
Спасибо за Ваш отзыв и ответ.

F-ES Sitecore

"Сеанс", упомянутый в этом коде, не является сеансом сервера, предоставляемым asp.net. Google "набор asp.net session javascript", и вы найдете некоторые трюки, которые позволяют вам установить переменную сеанса из js, наиболее распространенные из них-через вызов ajax или обновление src скрытого тега img и так далее, но ajax-это лучший способ сделать это.

Richard Deeming

Это похоже на ответ для меня. :)

1 Ответов

Рейтинг:
0

Vincent Maverick Durano

Чтобы получить? Ты, наверное, сможешь. Но, чтобы установить? Вы не можете, JavasSript используется для клиентских сценариев в браузере и не может получить доступ к объекту сеанса с сервера. JavaScript работает в браузере клиентов, ваш объект сеанса открыт сервером. Между ними нет никакого пространства.

Однако вы можете подключить JavaScript к веб-службе, а внутри веб-службы вы можете возвращать данные из вашего источника в метод JavasSript.

Если вы ленивы, вы можете сохранить это значение в скрытом поле, чтобы легко получить к нему доступ в своем JavaScript-коде. Или используйте грязный способ, как это, чтобы получить значение:

<script type="text/javascript">
    var sessionValue = '<%= Session["Test"] %>';
    alert(sessionValue); 
</script>


≪%= variable % & gt;-Это выражение привязки данных, которое связывает значение переменной на стороне сервера с клиентом. Обратите внимание, что это будет работать только в том случае, если вы передаете значение (получаете значение от сервера). Он не будет работать для установки значения из вашего JavaScript. Вот почему я все еще предпочитаю использовать AJAX-вызов или HiddenField.