当前位置:编程学习 > C#/ASP.NET >>

再发一次,不知道有没有人帮忙一下啊,

vs2005
我在app_data文件夹里面建了一个class1.cs这个类,

public int IsUser()
    {
        if (Session["UserName"].ToString() == null || Session["UserName"].ToString() != null && Session["UserName"].ToString() == "")
        {
            //可能非有意的引用比较;若要获取值比较,请将左边转为类型string
            //Response.Redirect ("../index.aspx");
            //Response.Write("<script language=javascript>alert('你不是管理员!');location.href='Default.aspx';</script>");
            return 1;
        }
        else
        {
            return 0;
        }
    }

提示"当前上下文中不存在session"。

我的目的是,想在每个页面都调用这个isuser方法。如果session为空的话,转到登录页面,这种方法好吗? --------------------编程问答--------------------  if (this.Session["UserName"] != null)
判断语句写这个 --------------------编程问答-------------------- using System; --------------------编程问答-------------------- 先要判断 Session["UserName"] 是不是为空
Session["UserName"]==null  --------------------编程问答-------------------- if(string.IsNullOrEmpty(Session["UserName"].ToString())
{
//可能非有意的引用比较;若要获取值比较,请将左边转为类型string 
                        //Response.Redirect   ("../index.aspx"); 
                        //Response.Write(" <script   language=javascript> alert('你不是管理员!');location.href='Default.aspx'; </script> "); 
                        return   1; 
                } 
else 

      return   0; 

可以用這個方法判斷string.IsNullOrEmpty()是否為空""或者為null --------------------编程问答-------------------- public   int   IsUser() 
        { 
                if   ( Session["UserName"].ToString()!=null)
                { 
                        //可能非有意的引用比较;若要获取值比较,请将左边转为类型string 
                        //Response.Redirect   ("../index.aspx"); 
                        //Response.Write(" <script   language=javascript> alert('你不是管理员!');location.href='Default.aspx'; </script> "); 
                        return   1; 
                } 
                else 
                { 
                        return   0; 
                } 
        } 

--------------------编程问答-------------------- 晕   楼上全部不对!!!

不在问题点子上

你按照下面的写:
System.Web.SessionState.HttpSessionState Session = 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"] is string && string.IsNullOrEmpty((string)Session["UserName"]))
{
    ...
}
--------------------编程问答-------------------- 对于判断session为空的问题,也即通过判断其如下几种情况:
1、是否为null
为空条件是:Session["UserName"]==null
2、是否为空字符串(可能很多人在退出的代码中将其赋值给空字符串,所以要这么判断。如果在退出时,采用赋为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)
{
    // code here ...
} --------------------编程问答-------------------- 搂主要解决的是用Session处理登录问题,因为退出时的处理方式不同,可有如下两种方法:

一、方法一

在退出登录时,设置session为空字符串。
此种情况下,对于判断session为空的问题,需要如下两种情况:
1、是否为null
为空条件是:Session["UserName"]==null
2、是否为空字符串(可能很多人在退出的代码中将其赋值给空字符串,所以要这么判断。如果在退出时,采用赋为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中吧?

如果是,那么:
public   int   IsUser() 
        { 
                System.Web.SessionState.HttpSessionState   Session   =   System.Web.HttpContext.Current.Session;
                if   (Session["UserName"].ToString()   ==   null   ¦ ¦   Session["UserName"].ToString()   !=   null   &&   Session["UserName"].ToString()   ==   "") 
                { 
                        //可能非有意的引用比较;若要获取值比较,请将左边转为类型string 
                        //Response.Redirect   ("../index.aspx"); 
                        //Response.Write(" <script   language=javascript> alert('你不是管理员!');location.href='Default.aspx'; </script> "); 
                        return   1; 
                } 
                else 
                { 
                        return   0; 
                } 
        } 

如果是在app_data中,那么请把它放到app_code中~~~~~

--------------------编程问答-------------------- Session["UserName"].ToString() == null

这个也不对,要写成

Session["UserName"] == null
要知道null是不能ToString的~~~ --------------------编程问答-------------------- if ((string)Session["UserName"] == "" || (string)Session["UserName"] == null)

  未登录的处理 


这样就可以啦 --------------------编程问答-------------------- 你在哪里定义的session? 去看一下对不对,名称有没有写错
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,