多用户访问时如何使用可变静态列表

How to use variable static list when multi user access

这个变量在一个用户使用时工作正常,但是当被两个或更多用户使用时,"static"变量将被下一个用户读取,第一个用户实例在填充 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 控制器中的代码。

代码运行良好,因为这是 "static" 的意图,为多用户提供相同的数据。在您的情况下,您需要创建一个列表或字典或多维数组(您熟悉的任何数据结构)并在其中保存每次使用的数据,然后在需要时根据用户 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()。

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