0

我的網站使用網絡用戶控件。用戶控件的屬性將被設置爲我的一組用戶通用的。例如如果我有20個用戶訪問我的網站,其中5個用戶可能正在使用id = 1的用戶控件,4用id = 2的用戶控件。我有一個與每個用戶控件關聯的屬性,我希望在訪問公共ID的用戶之間共享這些屬性。在web應用程序中的選定用戶之間共享數據c#

我認爲執行以下操作:

  • 一個應用變量這節省了一個ID/proprty值陣列組合
  • 用戶控件創建靜態屬性,但是我覺得值將所有之間shaed用戶無論身份證。
  • 或者,它存儲在數據庫中[我要減少與數據庫的交互。]

請指點。

+0

在Web上,在使用'static'之前請三思。 – 2010-09-27 08:28:39

回答

0

如果您決定不使用數據庫,請記住,如果您的應用程序擴展到多個服務器,那麼您可能需要在此時重新訪問您的體系結構,否則您的控件可能會在不同的服務器上顯示不同的信息相同的ID。

如果您對此感到滿意,那麼您可能需要考慮將信息存儲在ASP.NET緩存中,例如

System.Web.Caching.Cache cache = Page.Cache; 

List<KeyValuePair<string, object>> controlSetup; 

controlSetup = cache.Get("ControlSetup" + this.Id.ToString()); 

if (controlSetup == null) 
{ 
    // Create the control setup from scratch 
    // Put the created control setup into the cache 
    cache.Put("ControlSetup" + this.Id.ToString(), controlSetup); 
} 

foreach (KeyValuePair(string, object) item In controlSetup 
{ 
    // Set the control values 
} 
0

不知道我是否正確理解你;假設您想根據id顯示/隱藏某個項目。

如果那這樣的話,怎麼樣:

您提供根據您的負載控制開關的情況下;檢查id並設置您想要共享的項目的可見性。

舉例來說,id是用戶角色。所以基於此,我會:

switch (nRoleID) 
{ 
    case 1: //Set controls visibility and hide others/ 
     break; 
    case 2: //Do something. 
     break; ; 
    default: //Hide all 
     break; 
} 

只想大聲。

0

記住HTTP是無狀態的,所以你的前2個選項不會工作。

最好的選擇是存儲多用戶常見的信息是數據庫。

相關問題