2

如何使用 jquery 在会话中存储值。我正在使用以下代码

var Link = '<%=Session["Link"]%>';

从会话中获取数据。如何进行反向过程。

问题:

 I need this in my master page. so i cant use .ajax{}.

吉萨

4

3 回答 3

5

您可能需要设置一个HTTP 处理程序或类似的东西来接受请求并将内容存储在 Session 中。Visual Studio 在解决方案视图的“添加”菜单中的某处有这个。(如果您使用的是 ASP.NET MVC,您只需设置另一个操作而不是通用处理程序。)

由于这些值可能具有不同的类型(int、string 等),并且您不希望恶意用户插入他们认为合适的任何会话密钥,因此您可能需要设置一个分支来确定如何处理每个钥匙。像这样的东西(在您创建的处理程序内):

string key = context.Request.QueryString["key"].ToString();
string val = context.Request.QueryString["val"].ToString();
if(key == "AshDiffuserID"){
  int ash_diffuser_id = Convert.ToInt32(val);
  Session["AshDiffuserID"] = ash_diffuser_id;
}
else if(key == "PesterchumHandle") {
  string handle = val;
  Session["PesterchumHandle"] = handle;
} else // etc...

之后,您需要通过 jquery 设置一个post HTTP 请求,该请求将您需要的任何值放入那些“key”和“val”字段中。

$.post(
  'url/to/your/handler.ashx',
  {key: "PesterchumHandle", val: "carcinoGenetecist"}
); 
于 2010-02-25T06:29:56.087 回答
1

我浪费了一整天的时间来解决这个问题,而这只是一个快速解决方案。在 PageMethod 调用期间,会话 ID 不会与请求 URL 一起传递,因此会触发新的 session_start 事件。我们只需要在调用页面方法之前设置准确的请求路径,这样就不会触发新的会话开始事件。

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') {
//need to pass session id in request path
PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx');
}
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed);
于 2012-08-28T16:05:54.100 回答
0

您将需要通过 jquery 向服务器发送 ajax 帖子。

于 2010-02-25T06:37:21.600 回答