如何在提交表单后访问在同一页面中创建的会话变量? ASP.NET
How can I access session variables created in the same page upon submitting a form? ASP.NET
我正在使用网络表单,主页 (Default.aspx) 有登录表单。
现在,如果用户登录,我希望页面重新加载并在文本框中显示用户名(来自数据库)并将其禁用。
但我似乎无法访问会话变量来做到这一点!尽管我可以在重定向到其他页面时这样做。
这是登录按钮代码:
protected void LoginBtn_Click(object sender, EventArgs e)
{
commonMethod.DB_OpenConnection();
var userEmail = login.Text;
var userPass = password.Text;
SqlCommand myCommand = new SqlCommand("SELECT MemberName, Email, Pass, Member_Type FROM Member", commonMethod.myConnection);
SqlDataReader myReader = null;
myReader= myCommand.ExecuteReader();
while(myReader.Read())
{
if ((String)myReader["Pass"] == userPass && (String)myReader["Email"]==userEmail)
{
submitMsg.Text = "success";
Session["username"] = (String)myReader["MemberName"];
Session["role"] = myReader["Member_Type"];
Response.Redirect("Default.aspx");
break;
}
else
{
submitMsg.Text = "Failed";
}
}
commonMethod.DB_CloseConnection();
}
这就是我在同一页面中尝试访问会话用户名的方式。
public string username;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] != null)
{
username = (String)Session["username"];
login.Text = username;
login.Enabled = false;
}
else {
username = "example@gmail.com";
login.Text = username;
}
}
为什么登录后无法访问会话变量!?
谢谢大家的帮助,我实际上发现了我做错了什么:我在 Page_Load 方法中设置 login.Text = username;
这就是为什么每次用户在 'login' 文本框被更改,然后 if 语句(检查用户名和密码)执行 else { submitMsg.Text = "Failed"; }
,这导致会话变量未被初始化。
我正在使用网络表单,主页 (Default.aspx) 有登录表单。 现在,如果用户登录,我希望页面重新加载并在文本框中显示用户名(来自数据库)并将其禁用。 但我似乎无法访问会话变量来做到这一点!尽管我可以在重定向到其他页面时这样做。
这是登录按钮代码:
protected void LoginBtn_Click(object sender, EventArgs e)
{
commonMethod.DB_OpenConnection();
var userEmail = login.Text;
var userPass = password.Text;
SqlCommand myCommand = new SqlCommand("SELECT MemberName, Email, Pass, Member_Type FROM Member", commonMethod.myConnection);
SqlDataReader myReader = null;
myReader= myCommand.ExecuteReader();
while(myReader.Read())
{
if ((String)myReader["Pass"] == userPass && (String)myReader["Email"]==userEmail)
{
submitMsg.Text = "success";
Session["username"] = (String)myReader["MemberName"];
Session["role"] = myReader["Member_Type"];
Response.Redirect("Default.aspx");
break;
}
else
{
submitMsg.Text = "Failed";
}
}
commonMethod.DB_CloseConnection();
}
这就是我在同一页面中尝试访问会话用户名的方式。
public string username;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] != null)
{
username = (String)Session["username"];
login.Text = username;
login.Enabled = false;
}
else {
username = "example@gmail.com";
login.Text = username;
}
}
为什么登录后无法访问会话变量!?
谢谢大家的帮助,我实际上发现了我做错了什么:我在 Page_Load 方法中设置 login.Text = username;
这就是为什么每次用户在 'login' 文本框被更改,然后 if 语句(检查用户名和密码)执行 else { submitMsg.Text = "Failed"; }
,这导致会话变量未被初始化。