1

ログインページ:

Session("FirstName") = txtUserName.Text
Response.Redirect("CusRecords.aspx")

2ページ目:

lbl1.Text = Session("FirstName").ToString

私はそのコードを使用しましたが、このエラーが発生します:

Object reference not set to an instance of an object. 
that error refers to lbl1.Text = Session("FirstName").ToString

これはログインページの完全なコードです:

Public Class _Default
Inherits System.Web.UI.Page
Public s As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Session.Clear()
    Session.Abandon()
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim con As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("RegconnectionString").ConnectionString)
    con.Open()
    Dim userCount As Int32 = GetUserCount(txtUserName.Text)
    Dim paasCount As Int32 = GetPassCount(TxtPassword.Text)


    If userCount > 0 And paasCount > 0 Then
        Session("FirstName") = txtUserName.Text
    Else
        lblErr.Visible = True
    End If
    Response.Redirect("CusRecords.aspx")
End Sub



' Method to check existence 
Public Shared Function GetUserCount(ByVal userName As String) As Int32
    Const sql = "SELECT COUNT(*) FROM Registration where username = @UserName"
    Using con As New SqlConnection(ConfigurationManager.ConnectionStrings("RegconnectionString").ConnectionString)
        Using cmd = New SqlCommand(sql, con)
            cmd.Parameters.AddWithValue("@UserName", userName)
            con.Open()
            Using reader = cmd.ExecuteReader()
                If reader.HasRows Then
                    reader.Read()
                    Dim count As Int32 = reader.GetInt32(0)
                    Return count
                End If
            End Using
        End Using
    End Using
End Function



Public Shared Function GetPassCount(ByVal password As String) As Int32
    Const sql = "SELECT COUNT(*) FROM Registration where password = @Password"
    Using con As New SqlConnection(ConfigurationManager.ConnectionStrings("RegconnectionString").ConnectionString)
        Using cmd = New SqlCommand(sql, con)
            cmd.Parameters.AddWithValue("@Password", password)
            con.Open()
            Using reader = cmd.ExecuteReader()
                If reader.HasRows Then
                    reader.Read()
                    Dim count As Int32 = reader.GetInt32(0)
                    Return count
                End If
            End Using
        End Using
    End Using
End Function





Protected Sub txtUserName_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtUserName.TextChanged

End Sub
End Class

他のページ:

Public Class CusRecords
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Session("FirstName") IsNot Nothing Then
        lbl1.Text = DirectCast(Session("FirstName"), String)
    Else
        lbl1.Text = "It is empty"
    End If


End Sub

エンドクラス

4

3 に答える 3

1

まず、セッションがnullでないことを確認してください

If Session("FirstName") IsNot Nothing Then
    lbl1.Text = DirectCast(Session("FirstName"), String)
End If

エラーが続く場合は、lbl1 が null でないことを確認してください

また、次の行に注意してください。

If userCount > 0 And paasCount > 0 Then
    Session("FirstName") = txtUserName.Text
Else
    lblErr.Visible = True
End If
Response.Redirect("CusRecords.aspx")

したがって、Session("FirstName") 変数を設定していなくても、常にリダイレクトしています。これが null の理由である可能性があります。

編集:
最後の問題は、Page_Load で Session.Clear() と Session.Abandon() を呼び出すことです

于 2012-12-20T15:41:39.400 に答える
0

これを試してください lbl1.Text = Session("FirstName") ToString() と入力しないでください。

于 2013-06-25T12:06:40.683 に答える
0

この行を削除して修正しました

Session.Abandon()
于 2012-12-20T15:58:18.803 に答える