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

时间:2014-07-12 19:27:31

标签: javascript jquery asp.net asp.net-mvc

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

当我按下" ok"我的服务器端代码应该执行,当我按"取消"什么都不应该发生,即使回复也不应该发生。

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

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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

最简单的方法是进行像这样的onclick事件(从头顶写,未经测试):

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

如果单击取消(从而取消单击事件),则应将返回false传递给onclick事件,如果单击“确定”,则返回true。如果它是一个ASP按钮,那么事件是OnClientClick而不是OnClick。

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

onClientClick="return YourJavascriptFunction();"

其中函数是这样的:

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

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

答案 1 :(得分: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>

在这种情况下,您可以在按钮中添加一个点击事件,此事件会打开确认。如果用户响应&#34;是&#34;,则会调用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中观察甚至是失败案例的处理。