2012-02-20 92 views
2

我有三個.cshtml使用WebMatrix中創建的:位於App_Code文件ASP.NET - 剃刀靜態變量壽命?

MyClass.cshtml:

@functions 
{ 
    public static string x; 

    public static void setX() 
    { 
     x = "some data"; 
    } 
} 

WithSet.cshtml位於根:

@{ 
    MyClass.setX();  
} 

@MyClass.x 

WithoutSet.cshtml位於根:

@MyClass.x 

當我訪問Wit hSet.cshtml,MyClass.x將被設置爲「一些數據」,然後,當我訪問WithoutSet.cshtml時,MyClass.x仍然包含「一些數據」。我期待這個類是新鮮的,沒有初始化,所以MyClass.x。我認爲我不完全理解發生了什麼,班級的壽命是多少?這裏的課是靜態的嗎?

+0

靜態變量對於Web服務器上的整個應用程序域是唯一的,並且在應用程序重新啓動之前將保持不變。 – 2012-02-20 06:46:44

+0

@StefanH所以你的意思是用戶分享相同的數據? – dpp 2012-02-20 06:48:57

+0

正確。正因爲這個原因,通常應該避免在Web環境中使用靜態字段。 – 2012-02-20 06:50:10

回答