静态字典在用户之间共享



我在Home Controller中有两个声明的静态字典:

private static Dictionary<string, string> _existingBranchesDict;
private static Dictionary<Guid, string> _choosedBranches;

我将它们声明为静态,因为它们在同一个Controller的许多方法中使用,并防止出现null引用异常。问题是,它们对于每个用户来说应该是唯一的,但由于有静态修饰符,这些字典在所有用户之间共享。当我在不同的方法中使用这些数据时,我必须在哪里存储这些数据,并且没有任何空引用异常?我在不同的方法中使用它们,例如:

[HttpPost]
public void DeleteBranch(Guid partialViewID, int deletedBranchIndex)
{
if (_choosedBranches.ContainsKey(partialViewID))
{
var resettedBranch = _choosedBranches[partialViewID];
_existingBranchesDict[resettedBranch] = "Enabled";
_choosedBranches.Remove(partialViewID);
}
}
[HttpPost]
public void LoadBranch(string Name, Guid ID)
{
_existingBranchesDict[Name] = "Disabled";
if (_choosedBranches.ContainsKey(ID))
{
_existingBranchesDict[_choosedBranches[ID]] = "Enabled";
}
_choosedBranches[ID] = Name;
}

AJAX从单个视图上呈现的不同局部视图中调用。它们为每个局部视图的所有下拉列表存储相同的数据,当用户选择单个元素时,它应该从其他局部视图的其他下拉列表中删除。

您只需要使用HttpContext.Items属性:

获取或设置可用于共享此请求范围内的数据的键/值集合。

最新更新