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