在 Web 应用程序 C# 中的选定用户之间共享数据

发布于 2024-09-25 01:13:19 字数 310 浏览 3 评论 0原文

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

我想到了以下内容:

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

请建议。

My website uses a web user control. The properties for the user control will be set will be common for a set of my users. e.g. if I have 20 users accessing my website, 5 of them may be using the user control with id = 1 , 4 using the user control with id =2. I have a property associated with each user control which I would like to be shared between users accessing a common id.

I thought of the following:

  • Applicaton variable which saves a id / proprty value array combination
  • Creating static properties for the user control, however i feel that the value will be shaed between all the users irrespective of the id.
  • Or store it in the database [i want to reduce interaction with the database.]

Please advice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萌吟 2024-10-02 01:13:19

不确定我的理解是否正确;假设您想根据 id 显示/隐藏某些项目。

如果是这样,那么如何:

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

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

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

只是大声思考。

Not sure if I understand you correctly; assuming that you want to show/hide certain item based upon the id.

If thats so, then how about:

You provide a switch case in your control upon load; that checks for the id and set the visibility of the item that you want to be shared.

Say, for instance, id is the user role. So based upon that, I would:

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

Just thinking out loud.

一片旧的回忆 2024-10-02 01:13:19

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

最好的选择是将多个用户共有的信息存储在数据库中。

Remember HTTP is stateless, so your first 2 options wont work.

The best alternative is to store the information thats common for multiple users is DB.

别再吹冷风 2024-10-02 01:13:19

如果您决定不使用数据库,请记住,如果您的应用程序扩展到多个服务器,您可能需要重新访问您的体系结构,否则您的控件可能最终会在不同服务器上为同一 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
}

If you're determined not to use a database, bear in mind that if your application scales out to multiple servers you may need to revisit your architecture at that point otherwise your control may end up displaying different information on different servers for the same id.

If you're happy with that, then you might want to think about storing your information in the ASP.NET cache e.g.

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文