我假设您使用的是 ASP.NET MVC (C#),如果没有,那么这个答案不在您的问题中。
难道不能通过javascript直接赋值会话值吗?不,有办法做到这一点。
再看看你的代码:
<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script>
一点点改变:
<script type="text/javascript" >
{
<%Session["controlID"] = "This is my session";%>
}
</script>
会话“controlID”已经创建,但是会话的值呢?是持久的还是可以通过 javascript 更改的?
让我们多改变一点:
<script type="text/javascript" >
{
var strTest = "This is my session";
<%Session["controlID"] = "'+ strTest +'";%>
}
</script>
会话已创建,但会话内部的值将是“'+ strTest +'”,而不是“这是我的会话”。如果您尝试将变量直接写入服务器代码,例如:
<%Session["controlID"] = strTest;%>
然后你的页面会出现错误“当前上下文中没有参数strTest ...”。到目前为止,直接通过 javascript 分配会话值似乎仍然是不可能的。
现在我转向一种新的方式。在后面的代码中使用 WebMethod 来做到这一点。再看看你的代码,稍作改动:
<script type="text/javascript" >
{
var strTest = "This is my session";
PageMethods.CreateSessionViaJavascript(strTest);
}
</script>
在代码隐藏页面中。我创建了一个 WebMethod:
[System.Web.Services.WebMethod]
public static string CreateSessionViaJavascript(string strTest)
{
Page objp = new Page();
objp.Session["controlID"] = strTest;
return strTest;
}
在调用 web 方法从 javascript 创建会话之后。会话“controlID”将具有值“这是我的会话”。
如果你使用我解释的方式,那么请在你的 aspx 页面的表单标签中添加这段代码。该代码有助于启用页面方法。
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
来源:JavaScript - How to Set values to Session in Javascript
编码愉快,
行程