主页asp.net中的会话变量

时间:2012-09-10 12:49:04

标签: vb.net session webforms master-pages

我有一个登录页面,我想将用户名设置为会话变量,因为我想在我的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

我在主页的init中执行此操作

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

3 个答案:

答案 0 :(得分:1)

这是因为在每个新页面上MasterPage都会检查QueryString变量“nameUser”。

最好在登录页面中设置Session(“nameUser”),因为它可以通过Session访问。

快乐编码!!!

答案 1 :(得分:0)

为什么不尝试使用HttpContext.User Property

HttpContext.Current.User

答案 2 :(得分: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