这个是我在登陆的时候遇到的一个问题,一用户登陆后,登陆的界面就要隐藏起来,而这个隐藏工作是在母版页中进行的
登陆界面单独做成一个用户控件,然后一个母版页包含这个登陆的用户控件
在登陆用户控件中写代码,如果登陆成功则将session["user"]=1,否则就还是null
如果在登陆用户控件点击登陆button后,执行的顺序是先执行page_load(),而这个page_load的执行顺序是从外到内,也就是从普通页->母版页->用户控件,在执行page_load()完后,再执行button中的代码,这样,在点击button后,按照上面的顺序执行,session["user"]里的内容没改变之前,母版页中的判断是否要隐藏登陆界面已经判断过,所以需要点两次登陆才能将登陆界面隐藏起来,,,,,问题就在这里,希望在用户控件里点button后,再重新执行一次母版页里的判断是否隐藏的函数,,,,,,代码如下:
*****************************load.ascx.cs
protected void Button1_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
sql s = new sql();
string str = "select * from Users where UserName='" + tbxuserName.Text + "'and UserPwd='" + tbxPwd.Text + "'";
if (s.read(str).Read()) { Session["UserName"] = tbxuserName.Text; lblOut.Text = "登陆成功"; }
else { lblOut.Text = "用户名或密码错误"; tbxuserName.Text = ""; }
}
}
***************************母版页
public void Page_Load(object sender, EventArgs e)
{
con();
}
public void con()
//在用户控件中点button后就想再调用这个函数
{
if (Session["UserName"] != null) { Load.Visible = false; Class.Visible = true;
}
}