Сохранение значений в asp.net сеансе с использованием jquery

StackOverflow https://stackoverflow.com/questions/2332082

  •  22-09-2019
  •  | 
  •  

Вопрос

Как сохранить значения в сеансе с помощью jquery.Я использую следующий код

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

чтобы получить данные из сеанса.Как выполнить обратный процесс.

Проблема:

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

Гита

Это было полезно?

Решение

Вероятно, вам потребуется настроить 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...

После этого вам нужно будет настроить отправить HTTP-запрос с помощью jquery, который помещает любые значения, которые вам нужны, в эти поля "key" и "val".

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

Другие советы

Я потратил целый день, чтобы разобраться с этой проблемой, в то время как это всего лишь быстрое решение.Во время вызова PageMethod идентификатор сеанса не передается с URL-адресом запроса, поэтому запускается новое событие session_start.Нам просто нужно задать точный путь запроса перед вызовом pagemethod, чтобы не было запущено новое событие запуска сеанса.

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

Вам нужно будет отправить ajax-сообщение на сервер с помощью jquery.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top