这是我写的一个codebehind的后台代码,想把session中变量参数传给控件,可是得不到,不知是什么原因?请帮忙看一下!
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControlsPublic Class SelfInfo:inherits Page
Public lbNiceName As Label
Public lbTel As Label
Public lbEMail As Label
Public lbAddr As Label
Public  lbZip As Label
 Public lbUserName As Label
 Sub Page_Load(Sender As Object, E As EventArgs)
  If Session("UserInfo")="" Then 
    Response.Redirect("../CommonUser/BuyBook.aspx")   Else
   lbUserName.Text=Session("UserName") 
   lbNiceName.Text=Session("NiceName") 
   lbAddr.Text=Session("Addr") 
   lbTel.Text=Session("Tel")
   lbZip.Text=Session("Zip")
   lbEMail.Text=Session("EMail")
  
  End If
End Class换一种方式写也不行
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControlsPublic Class SelfInfo:inherits Page
Public lbNiceName As Label
Public lbTel As Label
Public lbEMail As Label
Public lbAddr As Label
Public  lbZip As Label
 Public lbUserName As Label
 Sub Page_Load(Sender As Object, E As EventArgs)
If Session("UserInfo") Is Nothing Then
            Response.Redirect("../CommonUser/BuyBook.aspx")
            Response.End()
        Else
            '读取Session中的用户信息,然后依次显示
            Dim obj As UserInfo = CType(Session("UserInfo"), UserInfo)
            lbUserName.Text = obj.UserName
            lbNiceName.Text = obj.NiceName
            lbAddr.Text = obj.Addr
            lbTel.Text = obj.Tel
            lbZip.Text = obj.Zip
            lbEMail.Text = obj.EMail
        End If
    End SubEnd Class
Public Class UserInfo
    Private _UserId As String
    Private _UserName As String
    Private _NiceName As String
    Private _Tel As String
    Private _Addr As String
    Private _EMail As String
    Private _Zip As String
    Private _Role As Integer
    Private _State As Integer    Public Property UserId() As String
        Get
            Return _UserId
        End Get
        Set(ByVal Value As String)
            _UserId = Value
        End Set
    End Property
    Public Property UserName() As String
        Get
            Return _UserName
        End Get
        Set(ByVal Value As String)
            _UserName = Value
        End Set
    End Property
    Public Property NiceName() As String
        Get
            Return _NiceName
        End Get
        Set(ByVal Value As String)
            _NiceName = Value
        End Set
    End Property
    Public Property Tel() As String
        Get
            Return _Tel
        End Get
        Set(ByVal Value As String)
            _Tel = Value
        End Set
    End Property    Public Property Addr() As String
        Get
            Return _Addr
        End Get
        Set(ByVal Value As String)
            _Addr = Value
        End Set
    End Property    Public Property EMail() As String
        Get
            Return _EMail
        End Get
        Set(ByVal Value As String)
            _EMail = Value
        End Set
    End Property    Public Property Zip() As String
        Get
            Return _Zip
        End Get
        Set(ByVal Value As String)
            _Zip = Value
        End Set
    End Property
    Public Property State() As Integer
        Get
            Return _State
        End Get
        Set(ByVal Value As Integer)
            _State = Value
        End Set
    End Property    Public Property Role() As Integer
        Get
            Return _Role
        End Get
        Set(ByVal Value As Integer)
            _Role = Value
        End Set
    End PropertyEnd Class

解决方案 »

  1.   

    转换类型。
    如:  id.text=(String) Session["id"];
      

  2.   

    要先对Session进行赋值:
    Session["username"]="新年快乐"
    username.text=(String) Session["username"];
      

  3.   

    session好像没有赋值啊,不就直接转向../CommonUser/BuyBook.aspx啦
      

  4.   

    你去试试看类型转换啊,
    还有你的上一张页面里给session赋值了么
    或者,你去用request试试看
      

  5.   

    1.断点跟踪Session("UserInfo")是否有值,是否对label赋值
    2.必须类型转换
      

  6.   

    不好意思,其实session已经赋值了,只是由于篇幅原因没有写出来,在上一个页面中有:
    Dim obj As UserInfo = New UserInfo()
            

    If reader.Read Then
                obj.UserId = reader.Item("UserID")
                obj.NiceName = reader.Item("NiceName")
                obj.UserName = reader.Item("UserName")
                obj.Tel = reader.Item("Tel")
                obj.EMail = reader.Item("EMail")
                obj.Addr = reader.Item("Addr")
                obj.Zip = reader.Item("Zip")
                obj.Role = reader.Item("Role")

                      
                        Session("UserInfo")=obj

     Session("UserId")=obj.UserId
     
         Session("NiceName")=obj.NiceName
     Session("UserName")=obj.UserName 
     Session("Tel")=obj.Tel 
     Session("EMail")=obj.EMail
     Session("Addr")=obj.Addr
     Session("Zip")=obj.Zip 
     Session("Role")=obj.Role
             
           End If
    我照各位的意思做了,转换了一下类型:
    lbUserName.Text=CStr(Session("UserName")) 
       lbNiceName.Text=CStr(Session("NiceName")) 
       lbAddr.Text=CStr(Session("Addr")) 
       lbTel.Text=CStr(Session("Tel"))
       lbZip.Text=CStr(Session("Zip"))
       lbEMail.Text=CStr(Session("EMail"))
    还是不行,请帮忙看看还有什么问题,谢谢各位!有一点我不明白,为什么要转换数据类型呢?能否给予指教?
      

  7.   

    Session是Object对象,所以存在BOX和UNXBOX!!!
      

  8.   

    Session["BackColor"] = BackColor.Value;
    这是VB的写法
    详细的资料见http://www.dotnetjunkies.com/QuickStartv20/aspnet/doc/applications/state.aspx#sessionstate
      

  9.   

    調試一下,看session的值是什么
      

  10.   

    lbEMail.Text=Session["Email"].ToString();
    Session是对象类型 lable是string型的 必须转换
      

  11.   

    请确认:
    If reader.Read Then
     ... ...
    End If
    中的的代码被执行
      

  12.   

    1.你先在SESSION赋值的那个界面先把SESSION显示出来.说不定.SESSION连值都没有.
    2.赋值应该是 某个对象.text或者 对象.value
    3.最后取值应该要.tostring()
      

  13.   

    加上.ToString()应该就可以了吧