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

时间:2013-08-01 02:26:29

标签: c# asp.net

我的网页上有一个超链接,如果用户登录则链接应该正常工作,如果不是,则应该提示错误消息,指示用户未登录。我已经尝试了很多但是它没有工作正如我所料。我认为会话代码不起作用。请帮我解决问题。

这是我的登录按钮代码:

    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;
        } 
    }

1 个答案:

答案 0 :(得分:0)

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

这段代码就是问题:

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

在代码逻辑中进一步向下移动Response.Redirect(即在设置Session值后)。