0

ログイン ページがあり、ユーザー名をセッション変数として設定したいと考えています。これは、Web アプリケーションの右隅に表示し、すべてのコンテンツ ページでアクセスする必要があるためです。

私がやっていることは、ログインを行った後、マスターページでセッション変数を次のように設定することです:

Session("nameUser") = Request.QueryString("nameUser")

次に、最初にデフォルトのページにアクセスすると、問題なく動作します。しかし、マスターページも継承する別のページに変更すると、クラッシュしてエラーが表示されます: reference to object isn't established as an object instance. どうすればこれを解決できますか?

セッション変数を設定して、すべてのコンテンツ ページで使用したいだけです。(できない場合は、すべてのコンテンツ ページのマスター ページに設定します)

編集:

これは私のログインページにあります。ログインに問題がなければ、ユーザーの名前をパラメーターとして別のページにリクエストします。

Dim SQL As String = "SELECT * FROM Usuarios WHERE Identificacion='" & txtNomUsuario.Text & _
        "' AND Password='" & txtPasswordUsuario.Text & "'"

        Dim da As New SqlDataAdapter(SQL, cnn)
        Dim ds As New DataSet

        da.Fill(ds)

        If ds.Tables(0).Rows.Count() = 1 Then

            Dim nomUsuario As String = txtNomUsuario.Text

            Response.Redirect("Default.aspx?nomUsuario=" & nomUsuario)


        Else
            Response.Redirect("about:blank")

        End If

そして、マスターページの初期化でこれを行っています

Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Init

        If Not IsPostBack Then
            If Request.QueryString("nomUsuario") <> Nothing Then
                Session("nomUsuario") = Request.QueryString("nomUsuario")
                lblUsuario.Text = Session("nomUsuario")
            Else
                lblUsuario.Text = Session("nomUsuario")
            End If

        End If

    End Sub
4

3 に答える 3

1

これは、新しいページのそれぞれで、MasterPage が QueryString 変数「nameUser」をチェックするためです。

セッション全体でアクセスできるように、ログイン ページで Session("nameUser") を設定することをお勧めします。

ハッピーコーディング!!!

于 2012-09-10T13:32:25.390 に答える
0

HttpContext.User プロパティを使ってみませんか

HttpContext.Current.User
于 2012-09-10T12:55:34.660 に答える
0

マスターページからセッション変数の宣言を削除し、ログインページで宣言するだけです。お役に立てれば、

Session("nameUser") = Request.QueryString("nameUser")

    Dim SQL As String = "SELECT * FROM Usuarios WHERE Identificacion='" & txtNomUsuario.Text & _
            "' AND Password='" & txtPasswordUsuario.Text & "'"

            Dim da As New SqlDataAdapter(SQL, cnn)
            Dim ds As New DataSet

            da.Fill(ds)

            If ds.Tables(0).Rows.Count() = 1 Then

                Dim nomUsuario As String = txtNomUsuario.Text

                Response.Redirect("Default.aspx?nomUsuario=" & nomUsuario)


            Else
                Response.Redirect("about:blank")

            End If
于 2012-09-10T13:56:31.430 に答える