当代码隐藏中的某些条件变为真时,我想显示带有“是”和“否”按钮的消息。如果用户单击“是”,则一段代码将执行其他方式,但不会。
例如:
button_click()
{
if(condition== true)
{
popup a msg with yes and no
if(user click 'yes')
{
then some code...
}
}
}
答案 0 :(得分:0)
将此行添加到您的代码中:
button.OnClientClick = "if (!confirm('Do you want to ...')) return false;";
答案 1 :(得分:0)
虽然其他答案对于如何在Javascript中进行对话是正确的,但他说当代码隐藏中的某些条件成为现实然后运行一些代码(可能也在服务器上)。问题似乎不是确认功能,而是如何有条件地运行它。
如果你的应用程序的控制来自服务器端,那将会有点难看。也就是说,为了在两个基于服务器的操作中进行客户端交互,您必须有两次往返服务器。更好的方法是使用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,则会使页面再次回发给自己。
2)在第二次回发时,__EVENTARGUMENT
(由__doPostback
的第二个参数设置)将设置为1
,这意味着用户点击了确定。
如果他们不确认,您需要添加其他内容,具体取决于您想要发生的事情。也许你想用不同的论点再次发布页面。
无论如何 - 这真的是一个糟糕的模型,我不推荐它。如果您需要基于服务器上的某些东西进行客户端交互,而这些东西在他们单击按钮时您不知道,那么您应该使用ajax。因此,即使我认为这不是一个坏主意,这些技术对其他合法用途也很有用。