a.aspx是一个注册页面.它上面有一个检测用户名格式的正则表达式控件(RegularExpressionValidator),一个检测用户名是否存在的用户自定义控件(CustomValidator). 正则表达式控件的客户端验证是关闭的,如果注册成功后就提交到b.aspx,我把一个服务器按钮的PostBackUrl="~/b.aspx"
但出现问题了:当用户名不合法或者用户已经存在的情况下,还是提交到b.aspx,这就不符合我的要求了.
如果我去掉PostBackUrl="~/b.aspx",让a.aspx提交到自身的页面,一切正常
请教高手,给点指教!!!

解决方案 »

  1.   

    cncca(来个可乐 9_9) 
    -------------
    对你无语
      

  2.   

    如果你的用户控件是为了重用,我个人觉得使用类更好还有,有什么特殊的需求要使用postbackurl吗?
    你完全可以判断page.invalidate这个属性啊?
      

  3.   

    当你设置PostBackUrl时,按钮直接回发到页面b.aspx,而不是a.aspx。PostBackUrl的含义就是如此。
      

  4.   

    postbackurl提交的地址非a.aspx...
      

  5.   

    当你设置PostBackUrl时,按钮直接回发到页面b.aspx,而不是a.aspx。PostBackUrl的含义就是如此========错了,即使设置了 PostBackUrl 执行跨页提交,也是提交给当前页,然后 ASP.NET 内部做了一个类似 Respnse.Redirect 的动作,转到目标,否则 PreviousPage 就没用处了
      

  6.   

    当用户名不合法或者用户已经存在的情况下,还是提交到b.aspx,这就不符合我的要求了.
    如果我去掉PostBackUrl="~/b.aspx",让a.aspx提交到自身的页面,一切正常
    请教高手,给点指教!!!==========不知 LZ 如何设置的,不管是否是执行跨页提交还是本页,假如你禁用了验证控件的客户端验证,那么始终执行提交,验证过程由服务器完成,可以通过 Page.IsValid 检查是否通过验证按我的理解:但是,在跨页提交过程中,由于还是提交给本页,然后执行一个类似 Response.Redirect(永久定向) 的过程,客户端已经转到了 b.aspx 所以导致了你的“问题”,这个定向过程你没有干涉吧?本页提交响应后还是停留在 a.apsx 自然能看到那个错误信息,
      

  7.   

    对 PostBackUrl 研究很少,不知道如何在 a.aspx 中当验证无效时取消到 b.aspx 的转向,暂时能提供的方案时在 b.aspx  中判断,重新定向回来 a// b.aspx.cs
    void Page_Load (object sender, System.EventArgs e)
      { 
        // PreviousPage 实际上表示 a.aspx
        if (PreviousPage != null && !PreviousPage.IsValid) {
            Response.Redirect(Request.UrlReferrer.AbsolutePath); // 验证失败,转会 a
        }
    }