Session
我的 .Net Webforms 项目中的对象有一些奇怪的(至少对我而言)功能。我正在传递对象Sessions
并且我没有使用任何global
变量。我有如下描述的方法:
private int Foo()
{
RmRule ruleInEdit = (RmRule)Session["ruleInEdit"];
//here ruleInEdit.subjectAreaID=0
bool isValid = Validate();
if (isValid)
{
//do some stuff
//here ruleInEdit.subjectAreaID is 10 instead of 0
//the Validate function modified the ruleInEdit object
}
//other code
}
private bool Validate()
{
bool isValid;
//check some stuff
RmRule rule = (RmRule)Session["ruleInEdit"];
rule.subjectAreaID = 10;
Session["ruleInEdit"] = rule;
return isValid;
}
我认为 subjectAreaID 的值应该仍然是 0 但显然我误解了一些东西。ruleInEdit
当我将对象写回.Net 时,.Net 如何(或为什么)自动更新对象Session
。
- 在原始方法
Foo
中,我是否应该强制 ruleInEdit 再次读取会话以获取更新的对象和属性? - 由于我初始化它的方式,这个对象是否与会话范围相关联?