【问题标题】:How I can use sessions in my code using asp.net vb.net如何使用 asp.net vb.net 在我的代码中使用会话
【发布时间】:2015-11-13 02:36:00
【问题描述】:

我想进行会话,但我不知道从哪里开始。我自己登录,但没有使用会话,我必须进行会话。以下是我到目前为止所做的代码。

Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnLogin.Click

    If txt_username.Text = "" Or txt_password.Text = "" Then
        error_usr_invalid.Visible = False
        If txt_username.Text = "" Then
            error_usr_blank.Visible = True
        ElseIf txt_username.Text <> "" Then
            error_usr_blank.Visible = False
        End If
        If txt_password.Text = "" Then
            error_pwd_blank.Visible = True
        ElseIf txt_username.Text <> "" Then
            error_pwd_blank.Visible = False
        End If
    ElseIf txt_username.Text <> "" And txt_password.Text <> "" Then
        Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
        con.Open()
        Dim cmd As New SqlCommand("select * from users where username = '" + txt_username.Text + "' and Password = '" + txt_password.Text + "'", con)
        cmd.Parameters.AddWithValue("@username", txt_username.Text)
        cmd.Parameters.AddWithValue("@password", txt_password.Text)
        Dim da As New SqlDataAdapter(cmd)
        Dim dt As New DataTable()
        da.Fill(dt)
        If dt.Rows.Count > 0 Then
            error_usr_invalid.Visible = False
            error_usr_blank.Visible = False
            error_pwd_blank.Visible = False

            Response.Redirect("main.aspx")
        Else
            error_usr_invalid.Visible = True
            error_usr_blank.Visible = False
            error_pwd_blank.Visible = False
        End If
    End If

请通过在此代码中提出您的想法来帮助我。

【问题讨论】:

    标签: asp.net vb.net session


    【解决方案1】:

    就这么简单……

        Session("Username") = txt_username.Text
    

    之后,就可以得到每个页面上session的值了。

    【讨论】:

      【解决方案2】:

      您可以在此处阅读有关会话的信息:ASP.NET Session State Overview

      现在,只有几个例子:

      为会话添加价值:Session.Add("username", txt_username.Text)

      从会话中获取价值:Dim username As String = Session("username")

      例如:您可以将用户名存储到 Session("username") 并在其他页面上使用它(例如在您的 main.aspx 中),直到您将其删除。

      再举一个例子:

      Default.aspx

      Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnLogin.Click
        Session.Add("username", txt_username.Text)
        Response.Redirect("main.aspx")
      End Sub
      

      main.aspx 中:

      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label1.Text = Session("username")
      End Sub
      

      Session 可用于存储数组和其他类型的数据。例如:

      Session.Add("list", List(Of String))
      Session("list").Add("record #1")
      Session("list").Add("record #2")
      Session("list").Add("record #3")
      

      然后在其他地方使用它:

      For x = 0 to Session("list").Count - 1
        Label1.Text = Session("list")(x) + ", "
      Next
      

      删除会话:Session.Remove("username")(此会话项将被删除)

      当您完成您的工作时(例如您退出),您可以删除、清除、放弃会话。

      Session.RemoveAll() : Session.Clear() : Session.Abandon()

      您可以将一些数据存储到会话中,并在您的网络应用程序的任何地方使用它。

      顺便说一句。在您的代码中,更好的方法是:

      Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
      If con.State = ConnectionState.Open Then con.Close()
      con.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString").ToString
      con.Open()
      Dim cmd As New SqlCommand("select * from users where username = @username and Password = @password;", con)
      cmd.Parameters.AddWithValue("@username", txt_username.Text)
      cmd.Parameters.AddWithValue("@password", txt_password.Text)
      Dim tds As SqlDataReader = cmd.ExecuteReader
      Session.Add("isexist", tds.HasRows)   'there is example how to store result into session (in this case result value will be True or False)
      tds.Close(): cmd.Dispose(): con.Close()  'avoid connection stay opened
      If Session("isexist") = True Then
        'user successful log in, session("isexist") is True
        Session.Remove("isexist")
        Response.Redirect("main.aspx")
      Else
        'username or password doesn't exist in database, session("isexist") is False
        Session.Remove("isexist") 
       'do what You want
      End If
      

      当然,你必须注意sessiontimeout....你可以通过本文开头提供的链接阅读更多内容。

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 2018-09-16
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多