当按ok在对话框服务器方法执行,如果按取消留在我的页面上.如何去做

when press ok in dialog box server method execute and if press cancel stay on my page. how?

本文关键字:我的 何去做 取消 如果 服务器 对话框 ok 方法 执行 当按      更新时间:2023-09-26

我想在aspx页面中使用一个对话框(确定和取消)。

当我按"确定"时,我的服务器端代码应该执行,当我按"取消"时,什么都不应该发生,即使post也不应该做。

我想实现的工作流程是:

  • 按'save'(aspx按钮控制)
  • javascript函数,其中包含对话框代码
    • 如果按ok ->服务器端方法执行
    • 如果按取消 ->只留在我的页面

我怎样才能做到这一点?

最简单的方法是有一个onclick事件,像这样(从我的头脑中写的,未经测试):

onclick="return confirm('Are you sure?');"

如果他们点击取消(因此取消点击事件),这应该传递一个返回false给onclick事件,如果他们点击Ok则返回true。如果它是一个ASP按钮,那么事件是OnClientClick而不是OnClick。

调用一个函数,事件处理程序应该是:

onClientClick="return YourJavascriptFunction();"

,其中函数是这样的:

function YourJavascriptFunction() {
  return confirm("Are you sure?");
}

显然这个函数可以做的远不止这些,但是它需要返回对话框的结果

你可以通过javascript/jquery:

<script type='text/javascript'>
    document.getElementById("someButtonId").onclick = function() {
        var confirmation = window.confirm("Are you sure?"); //confirmation variable will contain true/false.
        if(confirmation) { 
           vvar dataValue = { "name": "myName", "isGoing": "toAPlace", "returnAddress": "anyAddress" };
           $.ajax({
           type: "POST",
           url: "Default.aspx/OnSubmit",
           data: dataValue,
           error: function (XMLHttpRequest, textStatus, errorThrown) {
              alert("Request: " + XMLHttpRequest.toString() + "'n'nStatus: " + textStatus + "'n'nError: " +       errorThrown);
             },
          complete: function (jqXHR, status) {
              alert("complete: " + status + "'n'nResponse: " + jqXHR.responseText);
          }
        });
        }
        else { /* do nothing */ }
    }
</script>

在本例中,您向按钮添加了一个click事件,该事件将打开一个确认。如果用户回答"是",则以下OnSubmit函数从默认。Aspx页面,将被称为:

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    // method called from the javascript
    [WebMethod]
    public static string OnSubmit(string name, bool isGoing, string returnAddress)
    {
        return "it worked";
    }
}

最后,在javascript中观察到失败的情况被处理了