我想解释一下我的摘要代码流程。
我有Session["MainRule"]
并且我调用了一种方法来从此=>
var temprule=get_temp_rule_byid(Session["MainRule"],id);
我将此temprule
添加到Session["temprule"]
。
因为我更新Session["temprule"]
时,我不想更新主会话Session["MainRule"]
。
但是当我在Session["temprule"].
更新内容时,为什么Session["MainRule"]
值会自动更改?
更新
var temprule= RulesRepository.get_temp_rule_byid(Session["MainRule"], id);
public static RuleViewModel get_temp_rule_byid(object rulesFromSession, string id)
{
RuleViewModel ruleViewModel = null;
var temp = rulesFromSession as Dictionary<string, RuleViewModel>;
if (temp?.TryGetValue(id, out ruleViewModel) == true)
{
return ruleViewModel;
}
return null;
}
答案 0 :(得分:2)
您的会话中的值看起来像是引用类型。 Session object changes when object is updated in C#
如果您不希望更改值,请在将值放入会话之前克隆该值。