0

我想在 ASP.Net 中使用带有是/否选项的 JavaScript 消息框。场景是,当我在按钮的 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为真,我也没有得到字符串 confirmValue的更新值。但是,如果我在“ OnClientClick ”上调用它,它工作正常。已经浏览了几乎所有的网址,但还没有运气。

任何帮助将不胜感激。

4

2 回答 2

1

您的代码不会等待服务器端的确认值。Page.ClientScript.RegisterStartupScript将只注册客户端脚本,然后方法执行将完成。它将继续下一行代码。处理注册的 javascript 代码不是服务器的责任。因此,如果您想实现Yes/NO确认并等待服务器端,请使用AjaxModelPopupExtender自定义代码,这将为您提供所需的内容。 在这里,您可以获得有关如何使用 ajaxmodel 弹出扩展器的更多信息

于 2015-02-16T07:33:21.737 回答
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

于 2015-02-16T07:46:13.540 回答