ASP.Net中的是/否MessageBox

时间:2015-02-16 07:22:36

标签: javascript c# asp.net onclientclick

我想在ASP.Net中使用带有Yes / No选项的JavaScript Message-Box。场景是,当我在按钮的Client_click事件上调用JavaScript函数时,它的工作正常。但是当我从后面的代码(C#)调用它时,它会在完成代码执行后弹出。这是我正在尝试的:

    protected void Message_Click(object sender, EventArgs e)
    {
        if (var == 1)
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "open", "Confirm();", true);
        }
        string confirmValue = Request.Form["confirm_value"];


        if (confirmValue == "Yes")
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
        }
        else
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Nothing has been selected')", true);
        }

    }

即使 var == 1 条件为真,我也无法获得 string confirmValue 的更新值。 但是,如果我在" OnClientClick "上调用它,它可以正常工作。几乎所有的网址都经历过,但还没有运气。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您的代码不会等待服务器端的确认值。 Page.ClientScript.RegisterStartupScript将只注册客户端脚本,以及完成方法执行的那一刻。它将继续下一行代码。处理已注册的javascript代码不是服务器的责任。因此,如果您想要实现Yes/NO确认并等到服务器端,请使用AjaxModelPopupExtender和自定义代码,以便为您提供所需的内容。 Here you can get more info on how to use the ajaxmodel pop up extender

答案 1 :(得分:0)

你不应该像你一样去做。代码编码器是对的。 在客户端做客户端的东西,然后到服务器处理一些数据来处理或决定处理。

在您的情况下,您只需要编写Javascript函数并在需要时触发该函数。如果响应为是,则执行回发或Ajax。如果没有,那就留在页面上。

示例javascipt函数如下 -

<script language="javascript" type="text/javasctipt">
function getConfirmation(){
var r = confirm("Press a button!");
   if (r == true) {
      return true;
   } else {
      return false;
 }
}
</script>

您可以像 -

一样直接调用此方法
return confirm("Confirm Input");

如果您想使用漂亮的自定义UI,那么您可以在Ajax控件工具包中使用Ajax Modelpopupextender。

http://www.codeproject.com/Articles/34996/ASP-NET-AJAX-Control-Toolkit-ModalPopupExtender-Co