C#代码后台中的JavaScript确认框

3

我正在尝试在一些服务器端代码中显示JavaScript确认框,经过用户确认后继续处理,但是确认框没有显示出来。我甚至编写了一些示例代码,但没有成功。

在某些服务器处理之后,我需要问用户一个问题,并在用户确认后继续一些其他服务器代码。看起来很简单,即使弹出警报框也可以正常工作。我该如何解决这个问题?

请注意,我不能直接从按钮点击调用JavaScript确认框,我需要执行一些服务器端代码,如果那样做可以,然后我想显示一个确认框以继续执行。

以下是代码:

<asp:Button ID="btn_deletefromDB" runat="server" OnClick="btn_deletefromDB_Click"  Text="Delete from Datatbase);" />


protected void btn_deletefromDB_Click(object sender, EventArgs e)
{

         //Delete service from Database 
        // some server side processing code
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "confirm", "return confirm('Do you want to delete it from runtime too? Click OK to proceed.');", true);
        Label1.Text = "delete from runtime confirmed";
        // continue and delete from runtime
        //bla bla bla

}

我使用了RegisterClientScriptBlock而不是RegisterStartupScript,至少它显示了确认框,但是取消无法正常工作。这里有人提出了一些建议,但我还没有测试过。https://dev59.com/G2bWa4cB1Zd3GeqPXYGN - Niloofar
3个回答

3

不要在代码后台触发此操作,应该将其添加到Button1 OnClientClick事件中,如下所示:

<asp:Button ID="Button1" runat="server" OnClientClick="return confirm('Do you want to delete it? Click OK to proceed.');" OnClick="Button1_Click" />

我需要在某些处理完成后而不是立即通过按钮单击显示确认框。 - Niloofar
你仍然希望在客户端完成所有操作。在你的页面上创建一个 JavaScript 函数来执行需要完成的任务,然后在 OnClientClick 事件中调用你的 JavaScript 函数: OnClientClick="JavascriptFunctionName();". 如果你无法全部在客户端完成,可能需要重新考虑按钮和你的意图。 - McCee
是的,不幸的是,在显示确认框之前我需要执行的函数不能在客户端完成,或许我作为一个初学者并不知道如何在JavaScript中编写像数据库函数这样复杂的代码。 - Niloofar

2
Web应用程序不是这样工作的。您无法在页面的服务器端生命周期中间要求用户输入。必须在客户端提出此问题,并且用户的响应必须作为页面提交的数据的一部分发送到服务器。
所有ScriptManager.RegisterStartupScript所做的就是为页面完成请求处理时将发送给客户端的最终html内容做出贡献。请记住,当此html内容到达客户端计算机时,用户可能已经关闭了浏览器并回家了。

问题是我无法在按钮点击时得到确认,我需要先进行一些处理。有没有解决方法? - Niloofar
是的。你可以发出一个ajax请求(使用jquery),在服务器上执行前半部分处理,将成功的指示返回给浏览器,在ajax调用的success处理程序中调用javascript confirm,如果用户确认,则提交页面并完成服务器端操作。 - Igor
抱歉我是新手,您能再解释一下吗?或者如果您可以给我展示一些示例代码,我会非常感激。但是我只是用了RegisterClientScriptBlock而不是RegisterStartupScript,它起作用了。ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script", " confirm('您是否要从运行时中删除它?点击“确定”继续操作');", true); - Niloofar

1
使用AJAX向服务器提交查询并编写服务器代码,使其在两个部分中进行处理。我没有任何工作示例,但一般来说,它的工作方式如下:对于将数据发送到服务器,您可以使用JS中的本机AJAX对象或任何其他库,正如其他人建议的那样;对于在服务器端处理数据,您可以使用通用处理程序(ashx)而不是标准Web页面。
  1. 向服务器发送请求。
  2. 通过客户端页面上的JS捕获处理的第一部分。
  3. 显示JS窗口
  4. 提交另一部分到服务器
你必须将第一部分处理的结果发送回客户端,因为服务器默认情况下无法将第二个请求与第一个请求连接起来。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接