6

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

如果他单击对话框的确定​​按钮,我必须继续运行我在调用对话框之前停止的代码。

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

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

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

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

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

<input style="visibility:hidden;" id="btnSave" runat="server" onclick="btnSave_Click"/>

我不知道为什么不起作用。单击确认对话框的按钮 OK 后收到的错误如下: Erro em tempo de execução do Microsoft JScript: 'document.getElementByID(...)' é nulo ou não é um objeto

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

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

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

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

4

3 回答 3

1

暗中一刀。

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

另外,您是否有任何理由不使用 ASP:Button 控件,而不是 HTML 与runat="server"?

最后,它可能有助于type='button'您的<input....

更新

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

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

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

将代码更改为:

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

无论您在哪里拥有按钮,它都会起作用。

于 2012-11-22T20:31:14.890 回答
0

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

于 2012-11-23T05:24:59.483 回答
0

我解决了更换零件的问题

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

经过

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

我还用 asp:Button 替换了输入元素。

现在看看我的代码在我的代码后面的情况:

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

在我的 aspx 上:

<asp:Button id="btnSave" Width="0px" Text="" runat="server" onclick="btnSave_Click"/>

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

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

感谢所有的答案。

于 2012-11-23T16:41:36.057 回答