none
ASP.NET按条件弹出对话框 RRS feed

  • 问题

  • 请教一个问题,在按钮事件里,想实现如下功能。
    protected void btnSave_Click(object sender, EventArgs e)
    {
           if(满足条件)
           {
                   弹出对话框,确认后执行代码段A,取消不执行
                   code A
           }
           else
          {
                   弹出对话框,确认后执行代码段B,取消不执行
                   code B
          }
    }
    不是Page_Load里的
    btnSave.Attributes.Add("onclick", "javascript:return confirm('你确认……?')");
    这个不满足,判断前就弹出了。
    现在的问题是不弹出对话框,直接就执行相应的代码段了。不知道各位有何好的解决方案?谢谢。
    悠悠自在的鱼
    2009年8月26日 3:00

答案

  • 你提的这个问题先前有人提过,return confirm 就是为了阻止服端提交,提交后你就不能用使用 confirm 进行是与否的判定了,你可以使用 两个按钮来做,分别为这两个按钮注册 onclick 的 return confirm,WebForm 与 WinForm 机制不一样。
    知识改变命运,奋斗成就人生!
    2009年8月26日 3:10
    版主
  • 下面是一个伪代码。你自己明白思路,然后自己完善

    Page_laod里进行判断param:

    if(param == "true")
    {
     codeA();
    }


    protected void btnSave_Click(object sender, EventArgs e)
    {
           cstext1 = "window.location.href='当前页面.aspx?param=' + confirm('你真的要执行啊')"
           if(满足条件)
           {
                  ClientScriptManager.RegisterStartupScript(Page.GetType(), "kk", cstext1, true);
                   
           }
           else
          {
                   弹出对话框,确认后执行代码段B,取消不执行
                   
          }
    }

    void codeA()
    {
     
    }

    void CodeB()
    {

    }

    【孟子E章】
    2009年8月26日 3:14
    版主
  • 你好,这个问题之前有人问到过的
    webform没有winform的那种MessageBox
    要实现你只有在客户端先进行判断,在客户端用Javascript  confirm 如果为true 则将页面上某个隐藏的input的值设置为某个值,为false的则设置为另一个值,然后form1.submit()到服务器端,服务器端在Page_Load中根据那个隐藏input的值(可根据Request.Form获取)来判断执行不同的内容
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月26日 3:14
    版主

全部回复

  • 你的需求是典型的c/s结构下的思路,b/s下做法不是你那样的了。
    你需要使用ajax来做。进行2次请求。所以代码不能像你那么写在一个 btnSave_Click里了。、






    【孟子E章】
    2009年8月26日 3:08
    版主
  • 你提的这个问题先前有人提过,return confirm 就是为了阻止服端提交,提交后你就不能用使用 confirm 进行是与否的判定了,你可以使用 两个按钮来做,分别为这两个按钮注册 onclick 的 return confirm,WebForm 与 WinForm 机制不一样。
    知识改变命运,奋斗成就人生!
    2009年8月26日 3:10
    版主
  • 下面是一个伪代码。你自己明白思路,然后自己完善

    Page_laod里进行判断param:

    if(param == "true")
    {
     codeA();
    }


    protected void btnSave_Click(object sender, EventArgs e)
    {
           cstext1 = "window.location.href='当前页面.aspx?param=' + confirm('你真的要执行啊')"
           if(满足条件)
           {
                  ClientScriptManager.RegisterStartupScript(Page.GetType(), "kk", cstext1, true);
                   
           }
           else
          {
                   弹出对话框,确认后执行代码段B,取消不执行
                   
          }
    }

    void codeA()
    {
     
    }

    void CodeB()
    {

    }

    【孟子E章】
    2009年8月26日 3:14
    版主
  • 你好,这个问题之前有人问到过的
    webform没有winform的那种MessageBox
    要实现你只有在客户端先进行判断,在客户端用Javascript  confirm 如果为true 则将页面上某个隐藏的input的值设置为某个值,为false的则设置为另一个值,然后form1.submit()到服务器端,服务器端在Page_Load中根据那个隐藏input的值(可根据Request.Form获取)来判断执行不同的内容
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月26日 3:14
    版主