在程序中用session来保存一个变量,用switch来判断变量的值然后做相应的处理,简单代码举例如下:
switch (Session["bnt2"].ToString())
{
case "bntNon":
codeText.ReadOnly=false; Session["bnt2"]="bntAdd";
break;
case "bntAdd": codeText.ReadOnly=true; Session["bnt2"] = "bntAdd";
break;
}
在asp.net 2.0的运行环境下完全正常,但是通过iis去浏览的话有时候会报错说switch (Session["bnt2"].ToString())对象没有初始化,但是有时候又是正常的。因为程序要求要可以同时打开多个窗口并且要控制窗口的位置和其它一些属性我在页面用window.open()去打开窗口,在网上有查到window.open()会导致session变量丢失所以我采取了传递参数的方法,但是还是不行,所以请求各位高手帮忙!!!!
switch (Session["bnt2"].ToString())
{
case "bntNon":
codeText.ReadOnly=false; Session["bnt2"]="bntAdd";
break;
case "bntAdd": codeText.ReadOnly=true; Session["bnt2"] = "bntAdd";
break;
}
在asp.net 2.0的运行环境下完全正常,但是通过iis去浏览的话有时候会报错说switch (Session["bnt2"].ToString())对象没有初始化,但是有时候又是正常的。因为程序要求要可以同时打开多个窗口并且要控制窗口的位置和其它一些属性我在页面用window.open()去打开窗口,在网上有查到window.open()会导致session变量丢失所以我采取了传递参数的方法,但是还是不行,所以请求各位高手帮忙!!!!
===================================================
这多是因为SESSION对象不存在引起的,仔细检查你的程序,看是否有没对SESSION副职就调用的地方,或者加一个判断
if (Session["bnt2"] != null)
{
... ...
}
{
Session["bnt2"] = null;//可在這裡先進行初使化
}
建议用URL传递
例如:
http://index.aspx? action = add
还没有生成。
------------------------
单独打开文件的时候,Session没有初始化,当然有问题了.
string strSession = Session["bnt2"] != null ? Session["bnt2"].ToString():string.Empty;
switch(strSession)....
这样Session未初始化的化会初始为空值.------------------------
传递参数的方法,但是还是不行
------------
应该不会的,我一般用showModalDialog/showModelessDialog打开窗口.本页中传值用ViewState["名称"]好一些.大概使用方法和Session差不多.不初始化也要出错的.
最后的办法是设置断点跟踪,看看为什么Session为null.
另外补充点:session["bnt2"]="bntNon"是区别大小写的,包括里面的名字也一样.