繁体   English   中英

如果某些条件为真,我想在按钮单击时在ASP.net中显示带有“是”和“否”按钮的消息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM