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"),因为它可以跨 Session 访问。

快乐编码!

于 2012-09-10T13:32:25.390 回答
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 回答
0

你为什么不尝试使用HttpContext.User 属性

HttpContext.Current.User
于 2012-09-10T12:55:34.660 回答