在一个按钮事件中执行
onclick='if(confirm("确定更换用户名重新登录吗?"))document.all.login_if.src="login/login.aspx?action=logout";' login_if为iframe的id,
但在login.aspx中,必须点击两次该按钮才能出现指定的结果,不知为什么?
private void Page_Load(object sender, System.EventArgs e)
{

if(!Page.IsPostBack)
{
if(Request.QueryString["action"]!=null&&Request.QueryString["action"].ToString()=="logout")
{

if (HttpContext.Current.Request.Cookies["userna_co"]!=null&&HttpContext.Current.Request.Cookies["userna_co"].Value.ToString()!="")
HttpContext.Current.Response.Cookies["userna_co"].Value="";
                
else if(HttpContext.Current.Session["userna_se"]!=null&&HttpContext.Current.Session["userna_se"].ToString()!="")
{
HttpContext.Current.Session["userna_se"]="";
Session.Remove("userna_se");
Session.Abandon();
} Response.Redirect("login.aspx",true);


}
else
{
if (Request.Cookies["userna_co"]!=null&&Request.Cookies["userna_co"].Value.ToString()!="")
xm_login= Request.Cookies["userna_co"].Value.ToString();
else if(Session["userna_se"]!=null&&Session["userna_se"].ToString()!="")
xm_login= Session["userna_se"].ToString();
else
{
xm_login="";
Page.RegisterStartupScript("focus","<script>document.all('xmid').focus()</script>");

}
}
}

}
//////////////////////////////////////////xm=""在第二次才能执行

解决方案 »

  1.   

    因为你把代码放到if not ispostbaack当中了,不要加if not ispostback 就不会了
      

  2.   

    嵌套太多的if else 语句了,不好看清楚。建议自己设置断点,按F11单步跟踪一下,看看每一步代码执行后的值是什么。
      

  3.   

    if(Request.QueryString["action"]!=null&&Request.QueryString["action"].ToString()=="logout")
    {
        if (HttpContext.Current.Request.Cookies["userna_co"]!=null&&HttpContext.Current.Request.Cookies["userna_co"].Value.ToString()!="")
    HttpContext.Current.Response.Cookies["userna_co"].Value="";
                    
        else if(HttpContext.Current.Session["userna_se"]!=null&&HttpContext.Current.Session["userna_se"].ToString()!="")
    {
        HttpContext.Current.Session["userna_se"]="";
        Session.Remove("userna_se");
        Session.Abandon();
             }        Response.Redirect("login.aspx",true);

    }
    else
    {
        if (Request.Cookies["userna_co"]!=null&&Request.Cookies["userna_co"].Value.ToString()!="")
        xm_login= Request.Cookies["userna_co"].Value.ToString();
        else if(Session["userna_se"]!=null&&Session["userna_se"].ToString()!="")
            xm_login= Session["userna_se"].ToString();
        else
        {
    xm_login="";
             Page.RegisterStartupScript("focus","<script>document.all('xmid').focus()</script>");
        }
    }
    这样看的比较清楚了吧,关键是为什么执行两次才会有想要的结果
      

  4.   

    Javascript里加上 return true 和 return false;
    再试试
      

  5.   

    在logout.aspx中,
    private void Page_Load(object sender, System.EventArgs e)
    {
        if (HttpContext.Current.Request.Cookies["userna_co"]!=null&&HttpContext.Current.Request.Cookies["userna_co"].Value.ToString()!="")
        HttpContext.Current.Response.Cookies["userna_co"].Value="";
        else if(HttpContext.Current.Session["userna_se"]!=null&&HttpContext.Current.Session["userna_se"].ToString()!="")
        {
    HttpContext.Current.Session["userna_se"]="";
    Session.Remove("userna_se");
             Session.Abandon();
        }

    Server.Transfer("login.aspx");
    }在login.aspx中,
    if(!Page.IsPostBack)
    {
    if (Request.Cookies["userna_co"]!=null&&Request.Cookies["userna_co"].Value.ToString()!="")
        xm_login= Request.Cookies["userna_co"].Value.ToString();
    else if(Session["userna_se"]!=null&&Session["userna_se"].ToString()!="")
        xm_login= Session["userna_se"].ToString();
    else
    {
        xm_login="";
    Page.RegisterStartupScript("focus","<script>document.all('xmid').focus()</script>");

    }
    }
    在另外一个页面的按钮中添加事件:
    onclick='if(confirm("确定更换用户名重新登录吗?")) document.all.login_if.src="login/chk.aspx";' 
    login_if为一个iframe的id