用一个UserBar.ascx用户控件管理Login
ascx有两个htmltable : LoginTable是输入用户名,密码的
WelcomeTable是登录后显示 欢迎信息和用户名
我不知道一般的登录框是不是这样的,可是我这个总不行.
如果大家有好的办法,也教教我吧,小弟这里谢了!!我debug,发现按钮点了之后直接 postback了,没有执行click代码,页面生命周期是怎么回事啊?private void Page_Load(object sender, System.EventArgs e)
{
if(Request.Cookies["user"]!=null)
{
LoginTable.Visible = false;
WelcomeTable.Visible = true;
unameLabel.Text = Request.Cookies["user"].Value;
}
else
{
LoginTable.Visible = true;
WelcomeTable.Visible = true;
}
}
private void LoginBtn_Click(object sender, System.EventArgs e)
{
Operation.DBAccess dbaccess = new Operation.DBAccess();//COM+组件
string name = unameText.Text.ToString().Trim();
string pwd = upwdText.Text.ToString().Trim();
bool IsValid = dbaccess.Identify(name,pwd);
if(IsValid)
{
Response.Cookies["user"].Value = name;
Response.Cookies["user"].Expires = DateTime.Now + new TimeSpan(0,0,5,0);
}
else
{
unameLabel.Text = name;
}
}
后来我网上查了些,在Page_Load()里加了
if (!Page.IsPostBack)
{
unameText.Attributes["onkeydown"]="if (event.keyCode==13){document.all.UserBar1_LoginBtn.click();return false;}";
upwdText.Attributes["onkeydown"]="if (event.keyCode==13){document.all.UserBar1_LoginBtn.click();return false;}";
}
还是不行,HELP!!
ascx有两个htmltable : LoginTable是输入用户名,密码的
WelcomeTable是登录后显示 欢迎信息和用户名
我不知道一般的登录框是不是这样的,可是我这个总不行.
如果大家有好的办法,也教教我吧,小弟这里谢了!!我debug,发现按钮点了之后直接 postback了,没有执行click代码,页面生命周期是怎么回事啊?private void Page_Load(object sender, System.EventArgs e)
{
if(Request.Cookies["user"]!=null)
{
LoginTable.Visible = false;
WelcomeTable.Visible = true;
unameLabel.Text = Request.Cookies["user"].Value;
}
else
{
LoginTable.Visible = true;
WelcomeTable.Visible = true;
}
}
private void LoginBtn_Click(object sender, System.EventArgs e)
{
Operation.DBAccess dbaccess = new Operation.DBAccess();//COM+组件
string name = unameText.Text.ToString().Trim();
string pwd = upwdText.Text.ToString().Trim();
bool IsValid = dbaccess.Identify(name,pwd);
if(IsValid)
{
Response.Cookies["user"].Value = name;
Response.Cookies["user"].Expires = DateTime.Now + new TimeSpan(0,0,5,0);
}
else
{
unameLabel.Text = name;
}
}
后来我网上查了些,在Page_Load()里加了
if (!Page.IsPostBack)
{
unameText.Attributes["onkeydown"]="if (event.keyCode==13){document.all.UserBar1_LoginBtn.click();return false;}";
upwdText.Attributes["onkeydown"]="if (event.keyCode==13){document.all.UserBar1_LoginBtn.click();return false;}";
}
还是不行,HELP!!
if(Request.Cookies["user"]!=null)
{
LoginTable.Visible = false;
WelcomeTable.Visible = true;
unameLabel.Text = Request.Cookies["user"].Value;
}
else
{
LoginTable.Visible = true;
WelcomeTable.Visible = true;
} 放在if (!Page.IsPostBack)里,LoginBtn_Click处理函数不变不行吗?
if (!Page.IsPostBack)
{
unameText.Attributes["onkeydown"]="if (event.keyCode==13){document.all.UserBar1_LoginBtn.click();return false;}";
upwdText.Attributes["onkeydown"]="if (event.keyCode==13){document.all.UserBar1_LoginBtn.click();return false;}";
}还是不行。
登录成功,一个隐藏,一个显示...
我同学用过这个
他是这样的:
private void Page_Load(object sender, System.EventArgs e)
{
if ( Request.Cookies["jusername"] != null )
{
TABLE1.Visible = false;
TABLE2.Visible = true;
lusername.Text=Request.Cookies["jusername"].Value;
}
else
{
TABLE1.Visible = true;
TABLE2.Visible = false;
}
if (!Page.IsPostBack)
{
username.Attributes.Add["onkeydown"]="if (event.keyCode==13){document.all.FastLogin1_LoginHavier.click();return false;}";
password.Attributes.Add["onkeydown"]="if (event.keyCode==13){document.all.FastLogin1_LoginHavier.click();return false;}";
}
}
成功了。
也是要判断cookie决定panel的visible啊?
我就是借鉴了他的,没成功……
我是说,你用panel,怎么判断cookie,不是也要按钮点击后加了cookie??
如果按钮点击直接Page_Load了,怎么执行click?怎么加cookie啊啊啊?至于用一个控件还是两个控件都一样的啊,你是怎么实现的呢?
大家是怎么实现的呢?
然后onclick(),才把cookie加进去,再点按钮,页面判断有cookie了才显示。Page_load()是必须要检查cookie的,可是cookie又是由onclick()改动的,如果page_load()总在onclick之前,那么cookie就永远也不能及时被检查出来……不知道大虾们是怎么弄的……
郁闷中……liujia_0421() ,我的QQ是47087864,加我好吗?谢谢你!!
嗯,现在是,输入了username password之后,点按钮,没有反应,再点一次,出现的是上一次登陆的cookie……按照你的代码,这样的情况才是正常的...我觉得你同学的代码倒是可以实现的啊,你试过吗?我现在在公司,上不了QQ,如果不急的话,下班回家倒可以与你探讨一下...
如果Session["logined"]=true,则显示"欢迎信息"的控件所在的panel,反之显示"登录"控件所在的panel...
控件的page_load()完还要页面的page_load(),最后才能onclick()……
而且,两个控件位置是固定的,效果是一个消失了,另一个在另外的位置出现……
如果一个控件的两个table就有了替代的效果。糟糕的是,我把同学的那段代码屏蔽了,发现效果是一样的……
他的这样:全部在控件里:
private void Page_Load(object sender, System.EventArgs e)
{
if ( Request.Cookies["jusername"] != null )
{
TABLE1.Visible = false;
TABLE2.Visible = true;
lusername.Text=Request.Cookies["jusername"].Value;
}
else
{
TABLE1.Visible = true;
TABLE2.Visible = false;
}
/*下面这段没用……
if (!Page.IsPostBack)
{
username.Attributes.Add["onkeydown"]="if (event.keyCode==13){document.all.FastLogin1_LoginHavier.click();return false;}";
password.Attributes.Add["onkeydown"]="if (event.keyCode==13){document.all.FastLogin1_LoginHavier.click();return false;}";
}
*/
}private void LoginHavier_Click(object sender, System.EventArgs e)
{
int result = logUser.UserLogin(username.Text.Trim().Replace("'"," "),password.Text.Trim());
if ( result == 1 )
{
int cookdate=Convert.ToInt32(CookieDate.SelectedValue.ToString());
DataSet dsUserCookie = new DataSet();
if (cookdate!=0)
{
dsUserCookie = logUser.ShowInfo(username.Text.Trim(),"UserCookieInfo");
Response.Cookies["jusername"].Value = dsUserCookie.Tables["UserCookieInfo"].Rows[0][0].ToString();
Response.Cookies["jusername"].Expires = DateTime.Now.AddDays(cookdate);
Response.Cookies["juserpower"].Value = dsUserCookie.Tables["UserCookieInfo"].Rows[0][1].ToString();
Response.Cookies["juserpower"].Expires = DateTime.Now.AddDays(cookdate);
}
else
{
dsUserCookie = logUser.ShowInfo(username.Text.Trim(),"UserCookieInfo");
Response.Cookies["jusername"].Value = dsUserCookie.Tables["UserCookieInfo"].Rows[0][0].ToString();
Response.Cookies["juserpower"].Value = dsUserCookie.Tables["UserCookieInfo"].Rows[0][1].ToString();
}
Response.Redirect("/OSsite/pages/Home.aspx");
}
else
{
Response.Redirect("/OSsite/User/LoginError.aspx");
}
}
控件的page_load()完还要页面的page_load(),最后才能onclick()……是这样吗?我记得是顺序是这样的:控件的page_load()->onclick()->页面page_load(),刚才我说的有误....以前做网页的时候,我好像专门还跟踪过的....
To:两个控件位置是固定的,效果是一个消失了,另一个在另外的位置出现……先在页面放一个table,在table的一个格里上下排列放两个panel,然后两个panel分别放两个用户控件,一个显示,一个隐藏,同样可以实现你想要的效果啊...你说的问题可能是因为你把两个panel放在两个不同的table的格子里了吧....
郁闷……
成功了!debug同学那个,发现他是按钮onclick最后redirect本页,就重新page_load了……谢谢你!感谢不厌其烦的听我罗嗦……
如果不嫌弃QQ还可以加,呵呵~谢谢!!