none
如何捕获Web浏览器打开的模式窗口的返还值? RRS feed

  • 问题

  • 各位,我用C#写的删除按钮事件代码如下:

    void BtnDelete_Click(object sender, System.EventArgs e)

    {

          Response.Write("<Script language=Javascript>window.confirm('Are you sure to delete?');</script>");

    }

    问题是怎样在上面的事件程序中用C#代码捕获window.confirm()打开的模式窗口的返还值(是/否),以确定下一步代码.请高手指点.

    2010年7月27日 6:39

答案

  • 直接在render删除链接的时候就做验证,如果无权,就给链接disable

    有权的,则添加attribute

    这样在postback的时候,不需要获取confirm的值,只需要再判断是否有权删除

    2010年7月28日 3:48

全部回复

  • 不需要捕获

    直接注册客户端事件来处理

    ctrl.Attributes.Add("onClick","return confirm('sure?')");

    选择否就不会执行下去。

     

     


    family as water
    2010年7月27日 6:59
  • 如果在confirm()前面还有一些验证代码要执行呢?比如:

    void BtnDelete_Click(object sender, System.EventArgs e)

    {

      string strUserName = getUserName();

          if(strUserName != "Admin")

          {

                Response.Write("<Scirpt language=javascript>window.alert('你无权删除');</script>");

                return;

          }

          Response.Write("<Script language=Javascript>window.confirm('Are you sure to delete?');</script>");

    }

    2010年7月27日 7:30
  • 这样写好像真的很难找到其他办法,在 Code Behind 上写 HTML 或者 JS 脚本是一个应该被禁用的设计模式。

    比如楼主的问题,因为 window.confirm() 返回一个 bool (JS),如果要让 ASP.NET 代码获取这个值,只能将其存放到一个特定的 HTML 元素中去,如 Hidden。然后用 C# 代码去读这个 HTML 元素的值。例如:

    // JavaScript
    if (window.confirm("Are you sure you want to permanently delete this item?")) {
        $("#myHiddenField").attr("value", "true");
    }

    // C#
    if ((this.FindControl("myHiddenField") as HiddenField).Value)
    {
        // ...
    }

    不过,楼主的这种写法不能获取正确的值。因为 JavaScript 在 HTML Render 后才被执行,值也是在之后被传递给特定 HTML 元素,而此时,C# 的代码早已经执行完了。


    Mark Zhou
    2010年7月27日 9:22
  • 就是啊,哪怕我写这样的代码也无济于事:

    void BtnDelete_Click(object sender, System.EventArgs e)

    {

          Response.Write("<Script language=Javascript>if(!window.confirm('Are you sure to delete?'))history.back();</script>");

          //或者以return语句代替上面的history.back()也一样.

    }

    2010年7月27日 9:49
  • 直接在render删除链接的时候就做验证,如果无权,就给链接disable

    有权的,则添加attribute

    这样在postback的时候,不需要获取confirm的值,只需要再判断是否有权删除

    2010年7月28日 3:48
  • 我现在考虑的不仅仅是有权还是无权,更多的是要给予操作人员确认的机会,让他有选择是/否继续的权利。

    说实在的,我真的希望获得一个切实可行的解决方案。望各位高手继续关注并提供帮助!

    2010年7月28日 10:01