2017-07-24 106 views
1

我正在使用MVC5的MVC應用程序中工作。我想知道如何聲明一個全局變量。我已經在global.asax中創建了這樣的變量:全局變量MVC應用程序

HttpContext.Current.Application["Login"] = "Jonh Doe"; 

另外我在控制器中創建了私有靜態成員。但我意識到,如果兩個用戶正在瀏覽應用程序,則其他應用程序將共享一個存儲在變量上的值。

任何方式,我可以存儲變量之間不共享應用程序的所有實例?

+0

您可能正在尋找['HttpContext.Session'](https://msdn.microsoft.com/en-us/library/system.web.httpcontext.session%28v=vs.110%29.aspx ?f = 255&MSPPError = -2147217396) – Scott

+0

那麼唯一的方法就是將它存儲在會話中?最後,這是我結束這樣做的結果。但不像你解釋,你的例子更好。 –

+0

我在控制器上創建了這個結構 公共字符串facilitySelected {{0}} {返回Session [「Facility」]。ToString(); } set {Session [「Facility」] = value; } } 謝謝 –

回答

0

是的,你可以使用會話,這是全球性的,僅對當前用戶:

HttpContext.Current.Session["Login"] = "John Doe"; 

但是,你不會做,在Global.asax的,因爲會議是獲取一個非常初始化模塊具體時間(see this)。因此,您很可能想在適當的時間在控制器中執行此操作:

public ActionResult Index() 
{ 
    this.HttpContext.Session["Login"] = "X"; 
} 

作爲一個過於簡單的示例。

+0

謝謝!是的,這是我意識到另一種方法是在應用程序的所有實例之間共享的。 –