如何将会话值从 aspx(使用 javascript 存储)传递到 cs
How to pass session value from aspx (stored using javascript) to cs
我可以使用以下方式将会话变量存储在 aspx 页面中:
$(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
事件中的值。
我的问题:
那么为什么我无法使用第一种方法在 cs 中检索会话值(即不分配给隐藏变量)
如果你的意思是'client side java script'那么你不能,至少不能直接。会话数据存储在服务器上,客户端在不与服务器通信的情况下看不到它。
要访问它可以发出 HTTP 请求并让服务器端修改或 return 数据。
已更新
例子
<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
}
您不能直接从 javascript 设置或使用会话,因为它是一种服务器端状态管理技术。为此,您应该使用隐藏字段。
将 javascript 变量设置为隐藏字段,并在后面的代码中获取隐藏字段值并将其设置为所需的会话。
您可以通过以下方式实现:
Java 脚本
$(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 ;
}
我可以使用以下方式将会话变量存储在 aspx 页面中:
$(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
事件中的值。
我的问题: 那么为什么我无法使用第一种方法在 cs 中检索会话值(即不分配给隐藏变量)
如果你的意思是'client side java script'那么你不能,至少不能直接。会话数据存储在服务器上,客户端在不与服务器通信的情况下看不到它。
要访问它可以发出 HTTP 请求并让服务器端修改或 return 数据。
已更新
例子
<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
}
您不能直接从 javascript 设置或使用会话,因为它是一种服务器端状态管理技术。为此,您应该使用隐藏字段。
将 javascript 变量设置为隐藏字段,并在后面的代码中获取隐藏字段值并将其设置为所需的会话。
您可以通过以下方式实现:
Java 脚本
$(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 ;
}