使用jquery在asp.net会话中存储值

时间:2010-02-25 06:23:45

标签: jquery asp.net-session

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

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

从会话中获取数据。如何进行逆向处理。

问题:

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

格塔

3 个答案:

答案 0 :(得分:5)

您可能需要设置HTTP handler或类似的东西来接受请求并在会话中存储内容。 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...

之后,您需要设置post HTTP request到jquery,在“key”和“val”字段中放置所需的值。

$.post(
  'url/to/your/handler.ashx',
  {key: "PesterchumHandle", val: "carcinoGenetecist"}
); 

答案 1 :(得分:1)

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

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);

答案 2 :(得分:0)

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