如何调用确认弹出框?

时间:2011-12-09 04:50:52

标签: javascript asp.net

如果单击了一个asp.net按钮,我想显示一个确认弹出窗口(是,否)。

如果我单击是或否,它应该执行一些c#代码。

让我们说如果我点击是它会插入一条记录,如果我点击否它会更新记录

有人能给我一个例子,说明如何实现这个目标?因为我是javascript和c#的新手,所以我真的很难过。

2 个答案:

答案 0 :(得分:5)

如果您想允许用户取消他们刚刚点击的按钮,您可以使用OnClientClick属性:

<asp:Button runat="server" OnClientClick="return confirm('Are you sure?')" 
    OnClick="CSharpMethod" />

CSharpMethod代码中的一种方法,用于执行您想要运行的C#行(当用户接受确认时)。

此方法的签名应如下所示:

protected void CSharpMethod(object sender, EventArgs E) {
    Response.Write("Hello From Server");
}

修改

如果您希望将确认的错误结果发送到服务器,我建议您先创建一个隐藏的输入:

<input type="hidden" runat="server" id="hdnConfirm" />

然后在你的.net按钮

<asp:Button runat="server" OnClientClick="confirmWithUser()" 
    OnClick="CSharpMethod" />

然后创建JavaScript函数以使用OnClientClick:

function confirmWithUser(){
    document.getElementById("hdnConfirm").value = confirm('Are you sure?');
}

在您的C#方法中,您将能够像这样获得用户的响应:

protected void CSharpMethod(object sender, EventArgs E) {
    bool whatDidUserSay = Boolean.Parse(hdnConfirm.Value);

    //now do one thing or the other based on this value
}

答案 1 :(得分:1)

您无法通过JavaScript使用按钮的ClientClick事件来获取单击哪个按钮。您可以通过返回true或false来控制表单的提交。

 btn.OnClientClick = "return confirm('Ready to submit.')";

Javascript confirm without code in code behind

  

您希望执行的功能需要一些客户端   JavaScript到服务器端代码交互。这可能是可能的   检查json.org。有一些库执行这种类型   功能。

正如您所说,如果单击Yes,它会执行某些操作,如果No则更新。您可以使用Ajax Controls执行此操作。如果你被允许在你的解决方案中使用它们。

如果您不允许使用它们,请创建hidden field,并根据确认结果设置该字段的值。

<强>的.aspx

<input type="hidden" id="confirmResult" name="confirmResult" value="" />
<asp:Button  OnClientClick="ConfirmDialog();" 
    OnClick="OnServerClick" runat="server" />

<script>
   function ConfirmDialog() {
      var result = Confirm("Confirm Insert?");
      // set a flag to be submitted - "true"/"false"
      // or whatever suits
      document.getElementById("confirmResult").value = result; 
   }

<强> c#中

protected void OnServerClick(object sender, EventArgs e) {
    bool dialogResult = Convert.ToBoolean(confirmResult.Value);
if(dialogResult)
{
//Insert
}
else
{
//Update
}
}

检查此stackoverflow线程以获取更多详细信息:
ASP.net - Button - Javascript Confirm dialog - execute SOME server-side code?

检查此链接 - 我已使用的AJAX Enabled MessageBox使用UserControl和Ajax执行此类功能,以获取服务器端Click事件的确认结果。

看看这个,它正在使用按钮等的ClientClient事件,但在此客户端事件中它使用了ModalPopupExtender ajax控件。
Confirm Message Box