2016-12-20 64 views
0

我想實現我的C#控制器共享屬性在那裏我已經這樣定義它:創建跨控制器C#的所有方法可用共享屬性

public string guid; 
    public string _gu_id 
    { 
     get { return guid; } 
     set { guid = value; } 
    } 

public ActionResult ActionFirst() 
{ 
_gu_id = something...; 
} 

public ActionResult ActionSecond() 
{ 
// checking now if the _gu_id is !=null 
if(_gu_id!=null) 
// do something here 
} 

像這樣的屬性,都會在設置第一個動作,但它的價值是不是在第2個一個可用...

我可以聲明爲靜態的,但不是靜態變量應該在網頁迴避的解決方案..?

編輯:爲了更詳細解釋這個問題:

當proprety _gu_id在第一ActionFirst方法設置,我需要能夠獲取其在ActionSecond方法值,而不使用靜態變量...

+1

XY問題。你有一個問題,你認爲解決方案是「在我的控制器中創建一個成員變量」。解釋你想要解決什麼問題,因爲控制器是根據請求創建的。您可能需要在會話,令牌,標題或其他地方存儲某些內容。 – CodeCaster

+0

@CodeCaster問題如下:當在第一個方法中設置時,變量GUID需要在第二個方法中可用...我提到我可以使用靜態變量,但我避免使用它們,因爲我已經非常他們不愉快的經歷... – User987

+0

@CodeCaster所以在後第一個方法,當第2個方法被調用設置_gu_id變量,我需要在第二個方法的_gu_id值在第一種方法設置... – User987

回答

4

每當你被重定向到這個新控制器的新要求新的操作方法,你不能從一個請求到另一個像你正在尋找的方式保留價值。

而是使用Session變量這樣。

Session["guid"] = "YourValue"; 
2

如果您使用的持久性會話變量(通常是一個好主意)避免,掛到重定向之間的數據MVC還提供TempData

+0

你的意思是像TempData [「Key」]? – User987

相關問題