Memorizzare i valori in sessione asp.net utilizzando jQuery
-
22-09-2019 - |
Domanda
Come conservare i valori nella sessione utilizzando jQuery. Sto usando il seguente codice
var Link = '<%=Session["Link"]%>';
per ottenere i dati dalla sessione. Come fare il processo inverso.
Problema:
I need this in my master page. so i cant use .ajax{}.
Geetha
Soluzione
Si avrà probabilmente bisogno di creare un HTTP handler o qualcosa simile che accetterà le richieste e le cose memorizzare nella sessione. Visual Studio ha questo da qualche parte nelle "Aggiungi" menu nella visualizzazione soluzione. (Se si sta utilizzando ASP.NET MVC, è sufficiente impostare un'altra azione al posto di un gestore generico.)
Dato che tali valori verranno possono avere diversi tipi (int, stringa, ecc) e dal momento che non si desidera che gli utenti malintenzionati che colpiscono a qualsiasi chiave di sessione meglio credono, probabilmente si vuole impostare un ramo per stabilire cosa fare con ogni tasto. Qualcosa di simile (all'interno del gestore che si è creato):
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...
Dopo di che, è necessario impostare un richiesta HTTP POST tramite jQuery che mette qualunque valori necessari in quelle "chiave" ei campi "val".
$.post(
'url/to/your/handler.ashx',
{key: "PesterchumHandle", val: "carcinoGenetecist"}
);
Altri suggerimenti
Ho sprecato la mia giornata di risolvere questo problema, mentre questo è solo una soluzione rapida. Durante PageMethod chiamata, ID di sessione non viene superata con richiesta URL, in modo da evento nuovo session_start è essere stato licenziato. Abbiamo solo bisogno di impostare esatto percorso di richiesta prima di chiamare un PageMethod, in modo che il nuovo evento di avvio della sessione non può essere licenziato.
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);
Sarà necessario fare un posto ajax al server tramite jQuery.