2009-01-02 76 views
6

我可以爲單個請求的長度設置某種全局變量,以便頁面的所有控件都可以響應而無需將它傳遞給每個請求。爲請求持續時間設置全局變量

舉例來說,如果有人打我的母版保存按鈕,可我設置的東西讓我的頁面中的每個用戶控件可以有一個Page_Load中,如:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (isSaving) // isSaving is a global variable 
    { 
     saveData(); // save myself 
    } 
    loadData(); 
} 

它只是似乎比擁有一個輕鬆很多委託來自主頁面調用頁面的保存功能,然後調用UC1.saveData()到每個用戶控件,但我知道這是更好的面向對象的思維。

回答

21

是的,你可以。看看明顯的地方: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; 
     } 
    } 
} 
+1

+1包裹在自定義類集中的鍵名 – 2009-01-03 01:39:27