2012-05-12 25 views
1

是否有可能爲ASP.NET中的每個會話創建一個全局變量?通常我這樣做與會議:創建ASP.NET會話特定的全局變量?

Session("my_variable") = 10 

但是這需要我想用它像這樣每一次澆鑄:

Dim my_variable as String = CInt(Session("my_variable")) 

我看到,如果我創建一個模塊,我可以創建一個變數公開到每個會話的整個項目......我也看到Global.asax允許模塊提供的許多相同功能。我寧願避免寫一個模塊...有沒有辦法在Global.asax或其他一些最佳實踐方法中做到這一點?或者會話變量是最好的方式?

回答

2

創建一個包裝類爲您的變量這樣

public class SessionVariables 
{ 

    public static int MyVariable 
    { 
    get{ return if(Session["my_variable"] != null) (int)Session["my_variable"]; else 0;} 
    set {Session["my_variable"] = value;} 
    } 


} 

而且使用像

SessionVarible.MyVariable = 7; 

int p = SessionVarible.MyVariable + 3; 
1

如果你只是想存儲/會話範圍內檢索數據,那麼會議對象是要走的路。 HttpModules對於實現與ASP.NET請求管道中的特定點綁定的某些功能很有用(例如,假設您想在身份驗證請求上添加日誌記錄)。 Global.asax可以讓你做類似的事情,並且可能足夠滿足你的需要(只需實現你想在global.asax中定位的事件)。

如果你對對象感到擔心拳擊/拆箱,那麼我喜歡hkutluay使用隱藏類型轉換的包裝類的想法。