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 はどのように (またはなぜ) オブジェクトを自動的に更新しますかSession
?
- 元のメソッド
Foo
では、更新されたオブジェクトとプロパティを取得するために、ruleInEdit に強制的にセッションを再度読み取らせる必要はありませんか? - このオブジェクトは、初期化の方法によってセッション スコープに関連付けられていますか?