0

我的网站使用网络用户控件。将为我的一组用户设置用户控件的属性。例如,如果我有 20 个用户访问我的网站,其中 5 个可能使用 id = 1 的用户控件,4 个使用 id = 2 的用户控件。我有一个与每个用户控件关联的属性,我希望在访问公共 ID 的用户之间共享该属性。

我想到了以下几点:

  • 保存 id/proprty 值数组组合的应用程序变量
  • 为用户控件创建静态属性,但是我觉得该值将在所有用户之间共享,而与 ID 无关。
  • 或者将其存储在数据库中[我想减少与数据库的交互。]

请指教。

4

3 回答 3

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
}
于 2010-09-27T08:28:40.370 回答
0

不确定我是否理解正确;假设您要显示/隐藏基于id.

如果是这样,那么如何:

您在加载时在您的控件中提供一个开关盒;检查id并设置要共享的项目的可见性。

比如说,id是用户角色。因此,基于此,我会:

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

只是大声思考。

于 2010-09-27T08:59:31.640 回答
0

请记住 HTTP 是无状态的,因此您的前 2 个选项将不起作用。

最好的选择是将多个用户共有的信息存储为 DB。

于 2010-09-27T08:59:51.760 回答