在后面的代码上调用确认对话框并获取所选选项

我正在开发一个asp.net应用程序,我需要在后面的代码上调用一个确认对话框。 之后,我需要获得用户的点击(如果他点击确定或取消)。

如果他单击对话框的OK按钮,我必须继续运行我停止的代码,然后再调用对话框。

为了解决这个问题,我想在aspx中输入一个类型按钮的输入,并将它的样式设置为visibility:hide。 因此,当用户单击“确定”按钮时,程序将调用此隐藏按钮,该按钮调用将继续停止作业的方法。

我会发布我的代码,我希望它可能有所帮助。

下面的代码在我的代码后面,它调用了确认对话框。

System.Web.UI. ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage + "')){document.getElementById(\'\').click();}", true); 

下面的代码在我的aspx上,它是“隐藏”按钮。

  

我不知道为什么不工作。 单击“确认”对话框的“确定”按钮后收到的错误如下:执行Microsoft JScript:’document.getElementByID(…)’énuloounãoéumobjeto

我来自巴西所以错误是葡萄牙语,英语翻译它是这样的:

“Microsoft JScript上发生运行时错误’document.getElementByID(…)’为null或不是对象”

我看一下页面的html代码,我注意到按钮不在那里。

也许是因为我正在使用UpdatePanel,但是当我删除它时(仅用于测试,我必须使用更新面板),显示相同的错误,并且此时按钮位于页面的html代码上。

在黑暗中刺伤。

在你的代码隐藏中你设置了btnSave.visible = false; ? 如果是这样,这将阻止按钮呈现为HTML

另外,你有没有理由不使用ASP:Button控件,而不是混合使用runat="server"的HTML?

最后,在 type='button'可能会有所帮助

UPDATE

问题是你正在尝试应用内联标签document.getElementById(\'<%=btnSave.ClientID%>\')

在您的代码中<%=btnSave.ClientID%>尚不存在。

当您将按钮放在另一个服务器控件中时,您的代码将会中断,因为clientId将变得不同。

将代码更改为:

  document.getElementById('" + btnSave.ClientID + "') 

它会工作,无论你在哪里有按钮。

在浏览器中呈现页面后,右键单击它,然后说出“查看源”。 检查HTML并尝试查找隐藏按钮,如果找到它,请在语句getElementById(\'<%=btnSave.ClientID%>\')使用其id。 如果你没找到你的按钮,那么你可能已经从代码隐藏处将其可见性设置为false,删除它,再次按照上面的过程,你应该没问题。

我解决了更换零件的问题

 document.getElementById(\'<%=btnSave.ClientID%>\').click(); 

通过

 $(\"#ctl00_body_btnSave\").click(); 

我还用asp:Button替换input元素。

现在看看我的代码在我的代码背后是怎样的:

 System.Web.UI. ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage+ "')){$(\"#" + btnSave.ClientID + "\").click();}", true); 

在我的aspx上:

  

不建议使用Widht =“0px”和Text =“”来隐藏按钮,但我使用它是因为它不会给我带来问题。 建议使用CssClass使其隐藏。

因此,如果用户确认操作,则调用偶数btnSave_Click。

感谢所有的答案。