Armazenamento de valores no Asp.net Sessão usando jQuery
-
22-09-2019 - |
Pergunta
Como armazenar valores na sessão usando jQuery. Estou usando o seguinte código
var Link = '<%=Session["Link"]%>';
Para obter dados da sessão. Como fazer o processo reverso.
Problema:
I need this in my master page. so i cant use .ajax{}.
Geetha
Solução
Você provavelmente precisará configurar um Manipulador HTTP Ou algo semelhante que aceitará solicitações e armazenará as coisas na sessão. O Visual Studio tem isso em algum lugar nos menus "Adicionar" na visão da solução. (Se você estiver usando o ASP.NET MVC, basta configurar outra ação em vez de um manipulador genérico.)
Como esses valores podem ter tipos diferentes (int, string, etc.) e Como você não deseja que os usuários maliciosos cutucam qualquer chave de sessão que eles achem adequado, você provavelmente desejará configurar uma ramificação para determinar o que fazer com cada tecla. Algo assim (dentro do manipulador que você criou):
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...
Depois disso, você precisará configurar um Publique solicitação HTTP Através do jQuery, que coloca os valores que você precisa nos campos "chave" e "val".
$.post(
'url/to/your/handler.ashx',
{key: "PesterchumHandle", val: "carcinoGenetecist"}
);
Outras dicas
Eu perdi meu dia inteiro para resolver esse problema, enquanto essa é apenas uma solução rápida. Durante a chamada da Pagemethod, o ID da sessão não está sendo aprovado com o URL do Solicitação, portanto, o New Session_Start Event está sendo demitido. Só precisamos definir o caminho exato da solicitação antes de ligar para um método de Pagemeth, para que o novo evento de início da sessão não possa ser demitido.
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);
Você precisará fazer uma postagem de Ajax no servidor via jQuery.