问题描述
vs2005我在app_data文件夹里面建了一个class1.cs这个类,publicintIsUser(){if(Session["UserName"].ToString()==null||Session["UserName"].ToString()!=null&&Session["UserName"].ToString()==""){//可能非有意的引用比较;若要获取值比较,请将左边转为类型string//Response.Redirect("../index.aspx");//Response.Write("<scriptlanguage=javascript>alert('你不是管理员!');location.href='Default.aspx';</script>");return1;}else{return0;}}提示"当前上下文中不存在session"。我的目的是,想在每个页面都调用这个isuser方法。如果session为空的话,转到登录页面,这种方法好吗?
解决方案
解决方案二:
if(this.Session["UserName"]!=null)判断语句写这个
解决方案三:
usingSystem;
解决方案四:
先要判断 Session["UserName"] 是不是为空Session["UserName"]==null
解决方案五:
if(string.IsNullOrEmpty(Session["UserName"].ToString()){//可能非有意的引用比较;若要获取值比较,请将左边转为类型string//Response.Redirect("../index.aspx");//Response.Write("<scriptlanguage=javascript>alert('你不是管理员!');location.href='Default.aspx';</script>");return1;}else{return0;}可以用這個方法判斷string.IsNullOrEmpty()是否為空""或者為null
解决方案六:
publicintIsUser(){if(Session["UserName"].ToString()!=null){//可能非有意的引用比较;若要获取值比较,请将左边转为类型string//Response.Redirect("../index.aspx");//Response.Write("<scriptlanguage=javascript>alert('你不是管理员!');location.href='Default.aspx';</script>");return1;}else{return0;}}
解决方案七:
晕楼上全部不对!!!不在问题点子上你按照下面的写:System.Web.SessionState.HttpSessionStateSession=System.Web.HttpContext.Current.Session然后用楼上几位的方法你的类是写在CS文件里的,Session不是那样获取的想知道为什么自己查MSDN~~~~
解决方案八:
必须穿入当前的page,然后判断page.Session[""]
解决方案九:
上面的方法,都不行啊,我晕了,
解决方案十:
楼主和众多回答者让人晕了N次,6楼的就是正解,哪里还来什么问题?!一般不在页面的代码或者是asmx里,session和application都调用System.Web.HttpContext.Current.Session(application)的。
解决方案十一:
不要再拿ToString来当宝贝了!当Session["UserName"]为null的时候,下面的会报错的:Session["UserName"].ToString()==null你可以这样判断:if(Session["UserName"]!=null){....}或if(Session["UserName"]isstring&&string.IsNullOrEmpty((string)Session["UserName"])){...}
解决方案十二:
对于判断session为空的问题,也即通过判断其如下几种情况:1、是否为null为空条件是:Session["UserName"]==null2、是否为空字符串(可能很多人在退出的代码中将其赋值给空字符串,所以要这么判断。如果在退出时,采用赋为null的方法,则不用判断这一点)因为Session["UserName"]不是string类型,所以要先转换为string来判断。我们知道在转换为string的过程中,如果Session["UserName"]==null,那么会抛出异常,所以应该先判断Session["UserName"]是否为null。剩下的工作既是判断其是否为空字符串的过程。建议使用如下方法,字符串为空字符串判断条件是:string.IsNullOrEmpty((string)Session["UserName"])1和2只要满足其一,即为或的关系,才能是未登陆情况。又因为先后判断的关系,利用||操作符,只有第一个条件满足时,才去判断第二个,所以不会出现异常。最终判断未登录的条件如下示例:if((session["UserName"]==null)||(string.IsNullOrEmpty((string)Session["UserName"]))){未登录的处理}建议在退出设置中,将session["UserName"]设置为null。那么只判断1即可。如下:if(session["UserName"]==null){未登录的处理}
解决方案十三:
靠,都还不知道Session是否存在,就做了Session["*"]ToString(),你够强。if(Session["*"]!=null){//codehere...}
解决方案十四:
搂主要解决的是用Session处理登录问题,因为退出时的处理方式不同,可有如下两种方法:一、方法一在退出登录时,设置session为空字符串。此种情况下,对于判断session为空的问题,需要如下两种情况:1、是否为null为空条件是:Session["UserName"]==null2、是否为空字符串(可能很多人在退出的代码中将其赋值给空字符串,所以要这么判断。如果在退出时,采用赋为null的方法,则不用判断这一点)这个问题分为两步:转换为string类型,判断其为null和""的情况。因为Session["UserName"]不是string类型,所以要先转换为string来判断。我们知道在转换为string的过程,如果利用ToString转换,如果Session["UserName"]==null,那么会抛出异常,所以应该先判断Session["UserName"]是否为null。如果利用(string)Session["UserName"],则不会出现异常。从这里分析,我们发现情况越来越复杂了。至此,可以分出两种情况:1)使用Session["UserName"].ToString()方法这时要先判断Session["UserName"]==null的情况2)使用(string)Session["UserName"]方式。这时不需要先判断是否为空也可以。判断其为null或""剩下的工作既是判断其是否为空字符串的过程。建议使用如下方法,字符串为空字符串判断条件是:string.IsNullOrEmpty((string)Session["UserName"]),这种方法判断null和“”两种情况,如果分写相当于:(((string)Session["UserName"])==null)||(((string)Session["UserName"]).Trim()="")结论部分:对于采用这种方式,表示退出登录。1和2只要满足其一,即为或的关系,就是未登陆情况。如果采用Tostring()转换,因为先后判断的关系,利用||操作符,只有第一个条件满足时,才去判断第二个,所以不会出现异常。最终判断未登录的条件如下示例:if((session["UserName"]==null)||(string.IsNullOrEmpty(Session["UserName"].ToString()))){未登录的处理}如果采用(string)Session["UserName"])方式转换if((session["UserName"]==null)||(string.IsNullOrEmpty((string)Session["UserName"]))){未登录的处理}如前分析因为不会抛出异常,所以我们发现这两个条件似乎有些重复。可以省略第一个条件。但是如果省略第一个条件很多情况下,会增加一些系统的负担。因为每次都要进行类型的转换。二、方法二,在退出设置中,将session["UserName"]设置为null。那么只判断如上所述1即可。如下:if(session["UserName"]==null){未登录的处理}这种方法,少去许多判断,性能好。我认为方法二是较好的做法。但是从对方法一的研究中,我们能学到很多东西。即Session的类型问题,正是没有清楚认识到其类型问题在判断上出现了错误。同时也学习到了ToString()方法的异常问题。更重要的是,判断对象为空的问题,
解决方案十五:
晕乱七八糟的都写了什么啊~~~~~~~~~~~=============================================================LZ说:vs2005我在app_data文件夹里面建了一个class1.cs这个类=============================================================应该是在app_code中吧?如果是,那么:publicintIsUser(){System.Web.SessionState.HttpSessionStateSession=System.Web.HttpContext.Current.Session;if(Session["UserName"].ToString()==null¦¦Session["UserName"].ToString()!=null&&Session["UserName"].ToString()==""){//可能非有意的引用比较;若要获取值比较,请将左边转为类型string//Response.Redirect("../index.aspx");//Response.Write("<scriptlanguage=javascript>alert('你不是管理员!');location.href='Default.aspx';</script>");return1;}else{return0;}}如果是在app_data中,那么请把它放到app_code中~~~~~
解决方案:
Session["UserName"].ToString()==null这个也不对,要写成Session["UserName"]==null要知道null是不能ToString的~~~
解决方案:
if((string)Session["UserName"]==""||(string)Session["UserName"]==null){未登录的处理}这样就可以啦
解决方案:
你在哪里定义的session?去看一下对不对,名称有没有写错