如何在超链接选择中使用会话
本文关键字:会话 选择 超链接 | 更新日期: 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
值之后)。