Установите глобальную переменную для продолжительности запроса

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

Вопрос

Могу ли я установить какую-то глобальную переменную для длины одного запроса, чтобы все элементы управления страницы могли отвечать на него без необходимости передавать его каждому из них?

Например, если кто-то нажмет кнопку «Сохранить» на моей главной странице, могу ли я установить что-то, чтобы каждый пользовательский элемент управления на моей странице мог иметь 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;
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top