[英]I want to show a message with 'yes' and 'no' button in ASP.net on button click if some condition is true
当代码隐藏中的某些条件为真时,我想显示带有“是”和“否”按钮的消息。如果用户单击“是”,则一段代码将以其他方式执行,否则不会执行。
例如:
button_click()
{
if(condition== true)
{
popup a msg with yes and no
if(user click 'yes')
{
then some code...
}
}
}
将以下行添加到您的代码中:
button.OnClientClick = "if (!confirm('Do you want to ...')) return false;";
尽管就如何用Java进行对话框而言,其他答案是正确的,但他说, 当代码隐藏中的某些条件成立时 ,然后运行一些代码(可能也在服务器上)。 问题似乎不是确认功能,而是如何有条件地运行它。
如果您的应用是从服务器端控制的,这将是一个丑陋的事情。 也就是说,为了在两个基于服务器的操作中间进行客户端交互,您将不得不两次往返服务器。 更好的方法是采用基于客户端的操作,该操作使用AJAX从服务器获取条件,但是您可以按照以下方法进行操作:
override void OnLoad(EventArgs e)
{
if (SomeCondition) {
// cause a dialog to be displayed when page is loaded
string confirm = @"if (confirm('Are you sure you want to continue?')) {
__doPostBack('','1');
}";
ScriptManager.RegisterStartupScript(Page, Page.GetType(),
Guid.NewGuid().ToString(), confirm ,true);
}
// check for a javascript initiated postback
string args = Request.Form["__EVENTARGUMENT"];
if (!String.IsNullOrEmpty(args)) {
if (args=='1') {
DoSomethingOnConfirm();
}
}
}
基本上,您在这里做两件事:
1)如果SomeCondition
为true(可能是来自用户的帖子),则您注册了一个脚本,该脚本将在页面加载完成后运行。 该脚本会导致一个确认,如果为true,则会导致页面再次发回自身。
2)在第二次回发中, __EVENTARGUMENT
(由__doPostback
的第二个参数设置)将设置为1
表示用户单击“确定”。
如果他们不确定,您需要根据您想发生的事情添加其他内容。 也许您想使用不同的参数再次发布页面。
无论如何-这确实是一个不好的模型,我不建议这样做。 如果您需要基于服务器单击时不知道的东西的客户端交互,则应使用ajax。 因此,即使我真的认为这不是一个坏主意,这些技术也可以用于其他合法目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.