Question

Comment stocker des valeurs dans la session en utilisant jquery.J'utilise le code suivant

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

pour obtenir les données de la session.Comment faire le processus inverse.

Problème:

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

Gita

Était-ce utile?

La solution

Vous devrez probablement mettre en place un Gestionnaire HTTP ou quelque chose de similaire qui acceptera les demandes et stockera des éléments dans la session.Visual Studio l'a quelque part dans les menus "Ajouter" de la vue solution.(Si vous utilisez ASP.NET MVC, vous configurez simplement une autre action au lieu d'un gestionnaire générique.)

Puisque ces valeurs peuvent avoir différents types (int, string, etc.) et Puisque vous ne voulez pas que des utilisateurs malveillants accèdent à une clé de session qu'ils jugent appropriée, vous souhaiterez probablement créer une branche pour déterminer quoi faire avec chaque clé.Quelque chose comme ceci (à l'intérieur du gestionnaire que vous avez créé) :

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

Après cela, vous devrez configurer un poster une requête HTTP via jquery qui met toutes les valeurs dont vous avez besoin dans ces champs "key" et "val".

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

Autres conseils

J'ai perdu toute ma journée à régler ce problème alors qu'il ne s'agit que d'une solution rapide.Lors de l'appel PageMethod, l'identifiant de session n'est pas transmis avec l'URL de la demande, donc le nouvel événement session_start est déclenché.Nous devons simplement définir le chemin exact de la requête avant d'appeler une méthode de page, afin qu'un nouvel événement de démarrage de session ne puisse pas être déclenché.

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

Vous devrez faire une publication ajax sur le serveur via jquery.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top