【问题标题】:How to use variable static list when multi user access多用户访问时如何使用变量静态列表
【发布时间】:2018-06-25 06:51:39
【问题描述】:

如果由一个用户使用此变量可以正常工作,但是当由两个或更多用户使用时,下一个用户将读取“静态”变量,填充 gridview 时的第一个用户实例有 5 行数据和我在进入页面时尝试通过其他浏览器访问,第二个用户的gridview已经填充了第一个用户输入的5行数据。那么如何解决这个问题呢?请查看我的代码并给我一个解决方案。谢谢。

static List<ServicesModels> _gridPackageDetail = new List<ServicesModels>();

private void AddListAction(string alfa, string beta)
{
    ServicesModels data = new ServicesModels()
    {
          id_service_detail = Guid.NewGuid(), 
          scope_name = alfa, 
          detail_name= beta
    };
    _gridPackageDetail.Add(data);
}

public ActionResult GridPackageDetail()
{
    ViewBag.DataListPackage = _gridPackageDetail.OrderBy(a => a.scope_name).ToList();
    return PartialView();
}

我在 mvc3 控制器中的代码。

【问题讨论】:

  • 为什么要使用共享的静态文件?去除静电
  • @Wheels73,我的示例代码不完整,这是一个总结。因为我真的需要使用变量静态列表。我希望你知道我需要什么。谢谢

标签: c# list asp.net-mvc-3 static


【解决方案1】:

代码运行良好,因为这是“静态”的意图,为多用户提供相同的数据。在您的情况下,您需要创建一个列表或字典或多维数组(您喜欢的任何数据结构)并将每次使用的数据保存在其中,然后在需要时根据用户 ID 检索数据。

    static List<ServicesModels> _gridPackageDetail = new List<ServicesModels>();

private void AddListAction(string alfa, string beta)
{
    ServicesModels data = new ServicesModels()
    {
          id_service_detail = Guid.NewGuid(), 
          scope_name = alfa, 
          detail_name= beta,
         user_id = getTheID()// Get the id of the user

    };
    _gridPackageDetail.Add(data);
}

public ActionResult GridPackageDetail()
{
    ViewBag.DataListPackage = _gridPackageDetail.OrderBy(a => a.scope_name && user_id ==getTheID()).ToList();
    return PartialView();
}

用获取用户ID的方式替换getTheID()。

如果您想保留所有用户的数据,则使用此选项。否则你应该删除 static 关键字。

【讨论】:

  • 对不起?请翻译
  • 对不起,我忘记用英文写了。你能帮忙提供你想要的代码吗? =)
猜你喜欢
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多