麻烦知道的给下回复贴代码了
protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //
                Panel1.Visible = true;
                PaneWelcome.Visible = false;
            }
            else
            {
                string userName = Session["UserName"].ToString();
                if (userName == "")
                {
                    Panel1.Visible = true;
                    PaneWelcome.Visible = false;
                }
                else
                {
                    PaneWelcome.Visible = true;
                    Panel1.Visible = false;
                    lblWelcomeMsg.Text = "尊敬的" + userName + "您好";
                }
            }
        }——————————index.aspx—————————————————————
<form id="form1" runat="server" action="login.ashx">
                    <div id="login1main">
                        <asp:Panel ID="Panel1" runat="server" Visible="false">
                            <ul>
                                 <li>
                                    <input type="submit" value="登录" />
                                    <a href="Register.aspx">
                                        <img alt="" src="images/icon_zc1.gif" border="0" /></a></li>
                            </ul>
                        </asp:Panel>
                        <asp:Panel ID="PaneWelcome" runat="server" Visible="false">
                            <ul>
                                <li>
                                    <asp:Label ID="lblWelcomeMsg" runat="server" Text=""></asp:Label></li>
                                <li><a href="#" class="xg">资料密码修改</a></li>
                                <li><a href="#" class="jyjl">交易记录查询</a></li>
                                <li><a href="#" class="exit">退出一卡通平台</a></li>
                            </ul>
                        </asp:Panel>
                    </div>
                    </form>
_____________________________________提交到login.ashx
if (pwd == dbPassword)
                {
                    //登陆成功转向
                  
                    context.Session["UserName"] = userName;
                    context.Response.Redirect("~/index.aspx");
                }
 我是想通过index.aspx中的panel来显示登录 则显示欢迎XX 没有panel则换成登录窗口  但是load的ispostback一直是false
请问是什么问题??

解决方案 »

  1.   

    ashx 文件里应该不能 跳转的吧。
    而且你也没必要这样用,直接提交到 index.aspx 不就行了吗?
    感觉是 思路错啦,代码没错。。
      

  2.   

    一般登录后显示用户信息
    登录 
    using (SqlConnection cn = new SqlConnection(“”))
      {
      SqlCommand cmd1 = new SqlCommand("", cn);
      cn.Open();
      using (SqlDataReader dr1= cmd.ExecuteReader())
      {
      if(dr.Read())
      {
       //判断密码是否一致
       }
      }
      }
    if (!IsPostBack)
    {
     if(Session["username"]==null)Response.Redirect("");
    }
    或aajx 查询ashx 获取数据location.href跳转
      

  3.   

    你actin 去掉。
    然后 用一个服务器端 控件,之后执行onclick <form id="form1" runat="server">
        <div class="loginbox">
            <div class="login">
                <p>
                    帐 号:<div class="inputbg">
                        <asp:TextBox ID="txtUserName" CssClass="logininput" runat="server" Text=""></asp:TextBox>
                    </div>
                </p>
                <p>
                    密 码:<div class="inputbg">
                        <asp:TextBox ID="txtPassword" CssClass="logininput" TextMode="Password" runat="server"
                            Text="1"></asp:TextBox>
                    </div>
                </p>
                <p>
                    <asp:Button ID="btnLogin" runat="server" Text="登录" CssClass="buttons" OnClick="btnLogin_Click" />
                    <a href="#">忘记密码?</a></p>
            </div>
        </div>
        </form>
      protected void btnLogin_Click(object sender, EventArgs e)
            {
                string loginID = txtUserName.Text.Trim();
                string password = txtPassword.Text.Trim();
                string superPassword = ConfigurationManager.AppSettings["Password"] as string ?? "";
                Session.Clear();
                Response.Cookies.Clear();
                if (superPassword.Equals(CryptographyHelper.Encrypt3DES(password)) || LoginAdUser(loginID, password))
                {
                    UserInfo currentUser = Utility.GetCurrentUser(loginID);
                    WriteCookieAndLogin(currentUser);
                    return;
                }            ClientHelper.ShowMessage(this, "登陆失败");
            }
      

  4.   

    我不想用服务器端控件 的原因就是 产生太多的viewstate  所以前端都用 HTML控件了
      

  5.   

    你的index.aspx.cs里并没有任何回传动作,只有login.ashx里有个context.Response.Redirect("~/index.aspx");
    Redirect是第一次加载,IspostBack就是False
      

  6.   

    删除action
    前端都用 HTML控件
    使用ajax查询ashx获取数据,判断是否登录
      

  7.   


    <input type="submit" value="登录" />
    这不是传给了 ashx 然后通过 ashx中的Redirect 在回传了吗
      

  8.   

    你用webform而不用viewstate 就 没有利用到他的长处啦。
    其实也不多,上到4.0 的时候就减少很多,个人感觉3.5特别多。
    viewstate 多 的原因 很多是 写到页面 的 没禁用的服务器控件太多.
    像你这么几个控件的怕什么。。
      

  9.   

    竟然你是跳转到话,就将
      if (!IsPostBack)
    去掉
      

  10.   

    if (pwd == dbPassword)
      {
      //登陆成功转向
        
      context.Session["UserName"] = userName;
      context.Response.Redirect("~/index.aspx");
    我觉得可能出问题的地方还是Redirect 这个 不知道 我这样跳转了 是不是 又默认是第一次访问呢?
    如果去掉if (!IsPostBack) 那我怎么判断是回传还是第一次呢? 这个我也试过(试过把session的值付给一个变量 然后通过判断变量里面是否有值来判断是否是回传),但是第一次登陆由于session娶不到值 所以会报空引用的异常 头有点大了
      

  11.   

    这里 postback 是 false 就对啦。
    redirect()去 的页面 肯定是 第一次加载啦。
    (!ispostback)
    主要是用在当前页面的 事件处理,你从别的页面跳转过来 肯定当成 第一次加载的
      

  12.   

    context.Response.Redirect("~/index.aspx")
    这就是重指向,也就是第一次访问你最好看一下回传的工作原理,回传就是根据viewstate里的值进行判断的
    你Redirect了之后肯定是放弃了原来viewstate