我在Home Controller中有2个声明的静态词典:
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会从在单个视图上呈现的不同局部视图调用它们。它们为每个局部视图的所有下拉列表存储相同的数据,并且当用户选择单个元素时,应将其从其他局部视图的其他下拉列表中删除。