在后面的 C# 代码中显示“是/否”警报框
Posted
技术标签:
【中文标题】在后面的 C# 代码中显示“是/否”警报框【英文标题】:Display a "Yes / No" alert box in C# code behind 【发布时间】:2011-04-19 09:12:54 【问题描述】:我正在尝试在 C# 中显示来自代码隐藏的“是/否”消息框。如果用户单击“是”,我想调用“AddRecord”过程,如果用户单击“否”,则不执行任何操作。
理想情况下,我想使用下面的代码,但来自代码隐藏:
OnClientClick = "return confirm('Are you sure you want to delete?');"
我在 SO 和 google 上搜索,但找不到任何有用的东西。
【问题讨论】:
你的意思是不能用jQuery,还是不能用javascript? 不能使用 jQuery。 Javascript很好; 你应该在这个问题中添加标签 webforms 【参考方案1】:在您的添加记录按钮上,只需执行以下操作:
<asp:button ID="AddRecordbutton" runat="server" Text="Add Record"
onclick="AddRecordButton_Click" onclientclick="return confirm('add record?');" />
在您的代码中,只需将添加记录代码放入您的 AddRecordButton_Click 事件处理程序中。只有当他们在弹出窗口上单击“是”时才会调用它。
或者,您可以在最初呈现按钮时让您的代码隐藏分配 onclientclick 代码。
例如:
protected void Page_Load(object sender, EventArgs e)
AddRecordButton.OnClientClick = @"return confirm('Add Record?');";
【讨论】:
从 OP 发布的评论来看,我认为这是最好的方法。 非常酷@Chris。感谢您的回复。第一个代码示例就像一个魅力。 是的,但你必须明白这里是 JavaScript,而不是 C#。您不能在客户端上执行 C#。【参考方案2】:不,你没有。
您似乎误解了网页的基本概念。
一个 ASPX 页面是一个简短的程序,它启动,生成 html,然后终止。然后通过 Internet 将 HTML 发送到用户浏览器。您在代码隐藏中所做的一切都必须在用户看到之前完成。
你真的想要一个 javascript 对话框。 (实际上,根据您的描述,您可以在 HTML 中创建一个看起来像消息框的 div,上面有一个标准的 HTML 表单。)
【讨论】:
+1 用于 div,JS 消息框很烦人,现在大约三年没有在任何主要网站上使用。 @user:警告框会冻结浏览器,直到它被清除并遵循用户桌面的主题而不是网页的配色方案。 (html 论坛或 jQuery 对话框是网页本身的一部分,因此没有这些问题) 它们中断了用户工作流程。显示消息框后,我总是必须将视图集中在屏幕的中心(尽管我正在填写的字段可能位于页面底部,例如)。其次,消息框是模态的,例如,我必须阅读并关闭一个才能切换到另一个选项卡。然而,我必须说删除记录足以成为显示消息框的借口,因为它实际上确实需要中断用户工作流程。但是对于诸如错误的字段数据(或者更糟的是,“更新成功!”)之类的东西,它们永远不应该被使用。在我看来。 @James,只是为了争论,警报框的目的不是成为模态并冻结页面吗?我同意配色方案点; @gaearon,好的,我知道你来自哪里。谢谢你的解释。【参考方案3】:要显示一个实际的消息框,您将需要 javascript,因为它是在客户端完成的。无论出于何种原因,如果您不能使用 javascript,您可以按照 AEMLoviji 的建议进行操作,并巧妙地“伪造”它。
请注意,您不需要 jQuery 来显示消息框,简单的 javascript 就足够了。
【讨论】:
【参考方案4】:如果您在面板上使用 Ajax Control Toolkit Modal Popup Extender 和您的两个按钮,这将在服务器上触发一个事件,该事件可以处理并执行您希望的任何方法/功能
请参阅here 了解示例
【讨论】:
过去尝试过Ajax,但是生产服务器(网络农场)往往会弄乱ajax,所以我宁愿避免使用Ajax;【参考方案5】:使用RegisterStartupScript
ScriptManager.RegisterStartupScript(this, GetType(), "unique_key",
"element.onclick = function() return confirm('Are you sure you want to delete?'); ;",
true);
【讨论】:
【参考方案6】:显示是/否
<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")
...
【讨论】:
以上是关于在后面的 C# 代码中显示“是/否”警报框的主要内容,如果未能解决你的问题,请参考以下文章
在android编程中选中复选框时,使用警报框显示从给定的自定义列表视图中删除行的代码