在C#代码后端显示一个“是/否”警告框

4
我正在尝试从C#的后端代码中显示一个“Yes/No”消息框。如果用户点击“Yes”,我想调用一个“AddRecord”过程;如果用户点击“No”,则不进行任何操作。
理想情况下,我想使用下面的代码,但是从后端代码实现:
OnClientClick = "return confirm('Are you sure you want to delete?');"

我在 Stack Overflow 和 Google 上进行了搜索,但没有找到有用的信息。

1
你的意思是你不能使用jQuery,还是不能使用javascript? - Carvellis
不能使用jQuery。Javascript是可以的; - user279521
你应该在这个问题中添加webforms标签。 - Thomas Kjørnes
6个回答

12

在您的“添加记录”按钮上,只需执行以下操作:

    <asp:button ID="AddRecordbutton" runat="server" Text="Add Record"
 onclick="AddRecordButton_Click" onclientclick="return confirm('add record?');" />

在你的代码后台,只需将添加记录代码放在AddRecordButton_Click事件处理程序中即可。只有在用户单击弹出窗口上的“Yes”按钮时,才会调用它。


或者,你可以在按钮最初呈现时,让你的代码在客户端单击时执行。

例如:

protected void Page_Load(object sender, EventArgs e) {
  AddRecordButton.OnClientClick = @"return confirm('Add Record?');";
}

1
从OP发布的评论来看,我认为这是最好的方法。 - Kevin
1
非常酷的@Chris。感谢您的回复。第一个代码示例运行得非常好。 - user279521
1
是的,但你必须明白这里是JavaScript,不是C#。你不能在客户端执行C#。 - Dan Abramov

2
不,你不需要。
你似乎误解了网页的基本概念。
ASPX页面是一个短小的程序,它启动、生成一些HTML,然后终止。然后,HTML被发送到用户的浏览器上。在用户看到任何内容之前,codebehind中的所有操作都必须完成。
你真正需要的是一个JavaScript对话框。(实际上,根据你所描述的情况,你可以在HTML中创建一个类似消息框的div,并在其上添加标准的HTML表单。)

1
+1 对于 div,JS 消息框非常烦人,现在已经有三年没有在任何主要网站上使用了。 - Dan Abramov
警告框会冻结浏览器,直到被清除,并且遵循用户桌面的主题,而不是网页的颜色方案。(HTML表单或jQuery对话框是网页本身的一部分,因此没有这些问题) - James Curran
它们会打断用户的工作流程。当消息框显示时,我总是不得不将视线集中在屏幕中央(尽管我正在填写的字段可能在页面底部,例如)。其次,消息框是模态的,我必须阅读并关闭一个才能切换到另一个选项卡,例如。然而,我必须说,删除记录足以成为显示消息框的借口,因为它确实需要打断用户的工作流程。但对于诸如错误的字段数据(或更糟糕的是,“更新成功!”)之类的事情,它们永远不应该被使用。在我看来。 - Dan Abramov
@James,就争论而言,警告框的目的不是模态并冻结页面吗?我同意颜色方案的观点; - user279521
@gaearon,好的,我明白你的观点了。感谢解释。 - user279521

1

要显示实际的消息框,您需要使用JavaScript,因为它是在客户端完成的。无论出于什么原因,如果您无法使用JavaScript,您可以像AEMLoviji建议的那样通过一些巧妙的方法“伪造”它。

请注意,您不需要jQuery来显示消息框,简单的JavaScript就足够了。


0

使用RegisterStartupScript

ScriptManager.RegisterStartupScript(this, GetType(), "unique_key",
    "element.onclick = function(){ return confirm('Are you sure you want to delete?'); };",
    true);

0
如果您在面板上使用Ajax控件工具包模态弹出窗口扩展程序和两个按钮,这将在服务器上触发一个事件,可以处理并执行任何您希望的方法/函数。
请参见此处的示例。

以前尝试过使用Ajax,但是生产服务器(Web农场)往往会搞乱Ajax,所以我宁愿避免使用Ajax; - user279521

-1

显示是/否

<script>     
        function AlertFunction() {
            if (confirm('Are you sure you want to save this thing into the database?')) {
               $('#ConfirmMessageResponse').val('Yes');
            } else {
                $('#ConfirmMessageResponse').val('No');
            }
        }
    </script>

从 .net 方面处理它:

string confirmValue = ConfirmMessageResponse.Value;
                if (confirmValue == "Yes")
                {...}

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