Сохранение значений в asp.net сеансе с использованием jquery
-
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.