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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top