如果由一个用户使用,此变量可以正常工作,但是当由两个或多个用户使用时,"静态"变量将被下一个用户读取,第一个用户实例在填充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 控制器中的代码。
代码工作正常,因为这是"静态"的意图,为多用户提供相同的数据。在您的情况下,您需要创建一个列表或字典或多维数组(您愿意使用的任何数据结构(并将每次使用的数据保存在其中,然后在需要时根据用户 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((。
如果要保留所有用户的数据,则使用此方法。 否则,您应该删除静态关键字。