2013-11-09 31 views
0

這是一個ASP.NET Forms項目。當用戶輸入他/她的用戶名和密碼(在登錄頁面中)時,我想保存用戶名,以便可以在項目的任何頁面的代碼中檢索它。我知道我可以通過會話變量來做到這一點。
但是有可能創建一個靜態公共類與獲取設置並存儲在那裏的價值,並檢索它使用這個類?跨所有頁面全局存儲值

+0

如果我沒有記錯的話,靜態類由您的應用程序的所有實例/會話共享。因此,使用靜態類可能不是一個用戶名的好主意,因爲它完全可以看到一個用戶的名字出現在另一個用戶的屏幕上的情況... –

+0

@ ajax81謝謝。我沒有意識到靜態類將值存儲在服務器上。 – Hidalgo

回答

0

如果您使用的母版頁在那家商店,在隱藏的價值信息,因此您可以在任何頁面,您使用的是母版頁訪問創建一個隱藏字段。

+0

我確實使用母版頁。而且我會就谷歌如何創建一個隱藏領域。謝謝。 – Hidalgo

+0

http://msdn.microsoft.com/en-us/library/ms227988.ASPX –

+0

你可以投票,如果這是你想要的答案:) –

0

靜態類是在你的應用程序,這意味着你可以用一個類似於競爭條件最終跨實例/會話共享;例如,來自User_A的請求可以讀取由User_B在您的靜態類中設置的值。 (看到這SO answer

從臀部拍攝,它可能會更容易編寫一個包裝/抽象類爲您的用戶的信息,使訪問他們的細節更容易。喜歡的東西:

public class UserDetails{ 

    public string Name; 
    public string Age; 
    public string Gender; 

    public UserDetails(HttpContext context){ 
     this.Name = context.User.Identity.Name; 
     this.Age = ...; 
     this.Gender = ...; 

     // Alternatively, you could perform your own data access to 
     // get/set these details. It depends on how you're storing your 
     // users' info. 
    } 
} 

然後在後面的代碼......

UserDetails userDetails = new UserDetails(context.Current); 
Response.Write(userDetails.Name); // user's name 
Response.Write(userDetails.Age); // user's age 
... 
+0

非常感謝您的示例代碼。我會看看如何在我的情況下應用它。 – Hidalgo