当在对话框中按“确定”时,服务器方法执行,如果按“取消”,则留在我的页面上。怎么办?

问题描述 投票:0回答:3

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

当我按“确定”时,我的服务器端代码应该执行,当我按“取消”时,什么都不会发生,即使回发也不应该完成。

我想要实现的工作流程是:

  • 按“保存”(aspx按钮控制)
  • 具有 dialogbox 代码的 javascript 函数
    • 如果按 ok -> 服务器端方法执行
    • 如果按 取消 -> 仅停留在我的页面上

我怎样才能实现这个目标?

javascript jquery asp.net asp.net-mvc
3个回答
0
投票

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

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

如果单击“取消”(从而取消单击事件),则应将 return false 传递给 onclick 事件;如果单击“确定”,则应将 return false 传递给 onclick 事件。如果它是 ASP 按钮,则事件是 OnClientClick 而不是 OnClick。

要调用函数,事件处理程序将是:

onClientClick="return YourJavascriptFunction();"

其中的函数是这样的:

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

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


0
投票

您可以通过 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>

在这种情况下,您向按钮添加一个单击事件,该事件将在其中打开一个确认。如果用户回答“是”,则将调用 Default.aspx 页面中的以下

OnSubmit
函数:

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 中观察失败情况的处理情况。


0
投票
  function myFunction() {
      var data = confirm("Are You sure you want to Approve this request ??");

      if (data) {
          return true;
      }
      else {
          return false;
      }

  }

//您可以使用此代码

© www.soinside.com 2019 - 2024. All rights reserved.