我已经为我的表单提供了部分类作为代码隐藏
private object x;
我正试图在Page_Load
上使用它protected void Page_Load(object sender, EventArgs e) {
if (x != null)
y = x;
第一次它是null但是然后点击TreeView
中的一个元素我将它设置为某个对象并且它在那里不为空。它在表格上显示。
当我尝试使用网络表单中的对象时,表单再次处理Page_Load
,x
在那里为空。如何为每个公开会话保持x
静态?
答案 0 :(得分:3)
据我所知,请求之间的会话不会保留静态。你可能想在这里使用Session字典。这是所有代码隐藏页面文件中的内容。
Session["x"] = 10;
// if you want you can do:
// var x = Session["x"];
if (!String.IsNullOrEmpty(Session["x"]))
{
y = Session["x"];
}
上面的代码没有考虑到投射x。因此,如果y是一个int,你可以在if块中执行此操作:
// imagine there's some type safety checks somewhere, yada yada
y = Convert.ToInt32(Session["x"]);
这会保留会话生命周期的变量。为了证明这一点,请尝试在两个不同的浏览器中同时执行此操作。他们都会为x保留不同的值。
希望这有帮助。