Установите глобальную переменную для продолжительности запроса
-
03-07-2019 - |
Вопрос
Могу ли я установить какую-то глобальную переменную для длины одного запроса, чтобы все элементы управления страницы могли отвечать на него без необходимости передавать его каждому из них?
Например, если кто-то нажмет кнопку «Сохранить» на моей главной странице, могу ли я установить что-то, чтобы каждый пользовательский элемент управления на моей странице мог иметь Page_Load, например:
protected void Page_Load(object sender, EventArgs e)
{
if (isSaving) // isSaving is a global variable
{
saveData(); // save myself
}
loadData();
}
Это кажется намного проще, чем когда делегат с главной страницы вызывает функцию сохранения страницы, которая затем вызывает UC1.saveData() для каждого пользовательского элемента управления, хотя я знаю, что это лучше объектно-ориентированного мышления.
Решение
Да, ты можешь.Посмотрите на очевидное место:HttpContext и HttpContext.Current.Items
коллекция, которая всегда доступна во время обработки запроса (см. http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx).
Просто как намекать:
public static class RequestScopedData
{
private const string key = "key_that_you_choose";
public static bool IsSaving
{
get
{
object o = HttpContext.Current.Items[key];
return Convert.ToBoolean(o);
}
set
{
HttpContext.Current.Items[key] = value;
}
}
}