Javascript确认窗口没有回发

时间:2015-11-25 16:26:35

标签: javascript c# jquery asp.net

我正在创建一个页面,我在其中创建了Javascript弹出窗口,在回发时提供了确认脚本,例如我在页面加载中有这个

DotNetNuke.Framework.jQuery.RequestDnnPluginsRegistration();
string eventTarget = (this.Request["__EVENTTARGET"] == null) ? string.Empty : this.Request["__EVENTTARGET"];
string eventArgument = (this.Request["__EVENTARGUMENT"] == null) ? string.Empty : this.Request["__EVENTARGUMENT"];
cancelSelected = btnCancel_Click_Confirmed(eventTarget, eventArgument);

并且此方法要求取消选择

        protected const string cancelScriptKey = "CancelScript";
        protected void Cancel_Click(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), cancelScriptKey, CoachTeamRegister.BuildConfirmScript("Are you sure you want to cancel?\nAll unsaved changes would be lost?", cancelScriptKey), true);
        }

在这种情况下,这是有效的,因为我可以使用PageLoad中的变量cancelSelected

完成操作

稍后在代码中虽然我需要在方法内部执行此过程而不会回发,直到方法完成。有没有办法创建一个确认对话框并从选择中接收布尔值而不回发?

我能找到的最近的是Can I stop a post back by using javascripts confirm?,它讨论了我已经知道如何使用的页面上的静态按钮,客户想要一个特定情境的对话框

1 个答案:

答案 0 :(得分:0)

我知道阻止执行的唯一方法是使用默认确认,它将阻止执行,直到从对话框收到结果。使用像JQuery这样的自定义对话框时不是这种情况。实现这一目标的一种解决方法是使用__DoPostBackdocument.getElementById('btnId').click();

,根据您从对话框中获得的结果,通过JS执行服务器端方法

假设您的标记中有此按钮

<asp:button id="btnSave" runat="server" OnClick="btnSave_Click"/>

根据结果调用服务器端事件。

     <script>
      $(function() {
        $( "#dialog-confirm" ).dialog({
          resizable: false,
          height:140,
          modal: true,
          buttons: {
            "Save": function() {
              $( this ).dialog( "close" );
                 //Save was clicked. Call the server side event.
                 document.getElementById('btnSave clientId').click(); 
                 //Or alternatively __DoPostBack('btnSave clientId','');
            },
            Cancel: function() {
              $( this ).dialog( "close" );
                //Show message for the user if needed.
            }
      }
    });
  });
  </script>