如何在超链接选择中使用会话

本文关键字:会话 选择 超链接 | 更新日期: 2023-09-27 18:25:48

我的网页中有一个超链接,如果用户已登录,该链接应该可以工作。如果没有,它应该提示一条错误消息,表明用户没有登录。我尝试了很多,但它没有像我预期的那样工作。我认为会话代码不起作用。请帮我找出问题。

这是我的登录按钮代码:

    protected void Button2_Click(object sender, EventArgs e)
    {
        MySqlConnection connection = new MySqlConnection("server=localhost; database=e-learningsystem; uid=root; password=123;port=3307;");
        connection.Open();
        try
        {
            MySqlCommand cmd = new MySqlCommand("SELECT Password FROM student WHERE UserName='" + TextBox2.Text + "'", connection);
            // string password;
            password = Convert.ToString(cmd.ExecuteScalar());
            MySqlDataReader dr = cmd.ExecuteReader();
            if ((TextBox1.Text == password) && (dr.HasRows))
            {
                Response.Redirect("1stTymStuCategorySelection.aspx");
                while (dr.Read())
                {
                    UserInfo ui = new UserInfo(dr["UserName"].ToString(), dr["Password"].ToString(), dr["Name"].ToString());
                    Session["loggedUser"] = ui;
                }
                connection.Close();
            }
            else
            {
                Response.Write(@"<script language='javascript'>alert('INVALID Username and Password, Try Again!')</script>");
                // Session.Clear();
            }
        }
        catch (Exception ex)
        {
        }
        TextBox2.Text = "";
        TextBox1.Text = "";
    }

这是我的userInfo类代码:

    public class UserInfo
{
    private string _UserName;
    private string _Password;
    private string _Name;
    public UserInfo(string UserName, string Password, string Name)
    {
        _UserName = UserName;
        _Password = Password;
        _Name = Name;
    }
    public string UserName
    {
        get { return _UserName; }
    }
    public string Password
    {
        get { return _Password; }
    }
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }
}

这就是进行链接超链接选择的地方:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["loggedUser"] != null)
        {
            HyperLink1.NavigateUrl = "Year1Sem1Sub1.aspx";
        }
        else
        {
            HyperLink1.Visible = false;
        } 
    }

如何在超链接选择中使用会话

您的问题是在设置Session值之前重定向到另一个页面,因此Session始终为null

这个代码就是问题所在:

if ((TextBox1.Text == password) && (dr.HasRows))
{
    Response.Redirect("1stTymStuCategorySelection.aspx");

在代码逻辑中将此Response.Redirect进一步下移(即,在设置Session值之后)。