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

发布于 2024-08-23 02:04:01 字数 236 浏览 11 评论 0原文

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

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

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

问题:

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

吉萨

How to store values in the session using jquery.
I am using the following code

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

to get data from session. How to do the reverse process.

Problem:

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

Geetha

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苍暮颜 2024-08-30 02:04:01

您可能需要设置一个 HTTP 处理程序 或类似的东西接受请求并将内容存储在会话中。 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通过 jquery 的 HTTP 请求,将您需要的任何值放入这些“key”和“val”字段中。

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

You will probably need to set up an HTTP handler or something similar that will accept requests and store things in the Session. Visual studio has this somewhere in the "Add" menus in the solution view. (If you're using ASP.NET MVC, you just set up another action instead of a generic handler.)

Since those values will may have different types (int, string, etc.) and since you don't want malicious users poking into any session key they see fit, you will probably want to set up a branch to determine what to do with each key. Something like this (inside the handler that you created):

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...

After that, you'll need to set up a post HTTP request through jquery that puts whatever values you need in those "key" and "val" fields.

$.post(
  'url/to/your/handler.ashx',
  {key: "PesterchumHandle", val: "carcinoGenetecist"}
); 
蓦然回首 2024-08-30 02:04:01

我浪费了一整天的时间来解决这个问题,而这只是一个快速解决方案。在 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);

I wasted my whole day to sort this problem while this is just a quick fix. During PageMethod call, session id is not being passed with request URL, so new session_start event is getting fired. We just need to set exact request path before calling a pagemethod, so that new session start event can not be fired.

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);
你是暖光i 2024-08-30 02:04:01

您需要通过 jquery 将 ajax post 发送到服务器。

You will need to do an ajax post to the server via jquery.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文