2015-08-27 2 views
1

Я могу хранить переменную сеанса в ASPX-страницу с помощью следующим образом:Как передать значение сеанса из ASPX (сохраненная с помощью JavaScript) для сСт

$(document).ready(function() { 
      var userName = "webruster"; 
      '<%Session["UserName"] = "' + userName + '"; %>'; 
      alert('<%=Session["UserName"]%>'); 
     }); 

теперь, когда я пытаюсь извлечь Session["UserName"] я Я не могу получить это значение в cs. Для этого у меня есть работа, но вы хотите знать причину, почему она терпит неудачу?

Альтернативный способ:

Декларирование скрытой переменной и Link кнопка

$(document).ready(function() { 
      var userName = "webruster"; 
      '<%Session["UserName"] = "' + userName + '"; %>'; 
      var x = document.getElementById("<%=hdnsessionvalue.ClientID %>"); 
      x.value = '<%=Session["UserName"] %>'; 

      document.getElementById('<%= lnkButton1.ClientID %>').click(); 
     }); 

Так я могу получить значение в onclick случае в стороне сервера.

Мой вопрос: Так почему я не смог получить значение сеанса в сСт с использованием первого метода (т.е. без присвоения скрытой переменной)

+0

@Sac вы имеете в виду на pastbacking, его расчистке значение сеанса, который был назначено? – Webruster

+0

вы не можете установить сеанс на стороне клиента. это технология управления государственными системами на стороне сервера. Вы можете установить значение HiddenField Value и можете получить на стороне сервера. http://www.codeproject.com/Questions/341573/ – Sachin

+0

@Sac, но в режиме предупреждения с использованием 'alert ('<% = Session ["UserName"]%> ') 'Я могу видеть значение сеанса. Почему я могу видеть его на стороне клиента? – Webruster

ответ

5

Если вы имеете в виду «на стороне клиента Java Script», то вы можете 't, по крайней мере, не напрямую. Данные сеанса хранятся на сервере, а клиентская сторона не видит его без связи с сервером.

Чтобы получить доступ к нему, он может запросить HTTP-запрос и изменить или вернуть данные на стороне сервера.

Обновлено

Пример

<script> 
     // get the variable 
     var data = JSON.Stringify(yourVariable); 

     // Make the ajax call 
     $.ajax({ 
     type: "POST", 
     url: "aspPage.aspx/Method", //method we will call 
     contentType: "application/json; charset=utf-8", 
     data: {value: data }, //assign the 'data' values to 'value', its the data you want to send 
     dataType: "json", 
     success: function (result) { 
      alert('its working');    
     }, 
     error: function (result) { 
      alert('something wrong'); 
     } 
    }); 
    </script> 

на aspPage.aspx

[WebMethod] 
public static void Method(string value) 
{ 
    sting val = value; // Do whatever you want to 
} 
+0

Можете ли вы дать мне какой-либо пример того, как можно сделать http-запрос – Webruster

+1

@Webruster добавил пример. Другой способ - использовать метод страницы для вызова на стороне сервера с клиентской стороны. Надеюсь, это поможет – Angloos

2

Вы не можете устанавливать или использовать сессию JavaScript непосредственно, как это метод управления состоянием на стороне сервера. Для этой цели вы должны использовать скрытое поле.

Установите переменную javascript в скрытое поле и в коде позади, получите значение скрытого поля и установите его на желаемую сессию.

Вы можете достичь его:
Java Script

$(document).ready(function() { 
    var userName = "webruster"; 
    var x = document.getElementById("<%=hdnsessionvalue.ClientID %>"); 
    x.value = userName; 

    document.getElementById('<%= lnkButton1.ClientID %>').click(); 
}); 

Код За (CS)

protected void lnkButton1_Click(object sender, EventArgs e) 
{ 
    string test = hdnsessionvalue.Value; 
    Session["UserName"] = test ; 
}