ASP.NET:如果使用onclick,则不会调用OnServerClick事件处理程序

Den*_*gan 8 asp.net events onclick htmlbutton

我在这里有一个特殊的问题,我不能通过我的生活弄清楚解决方案是什么.请注意,以下代码不是动态创建的,而是直接在我的aspx文件中创建.

<button type="button" runat="server" id="btnSubmit"
  OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?');">
    Submit
</button>
Run Code Online (Sandbox Code Playgroud)

这只要工作就好了,因为我具备的onclick属性在那里,即OnServerClick处理程序被触发,因为它应该.但是当我使用该onclick属性时,无论我是否确认或拒绝确认对话框.

我究竟做错了什么?谢谢

Yur*_*ich 15

如果查看生成的源代码,您将看到以下内容:

onclick="return confirm('Sure?'); __doPostBack('btnSubmit','')"
Run Code Online (Sandbox Code Playgroud)

所以发生的事情是_doPostBack永远不会被调用.做你正在寻找的东西的hacky方法如下:

<button type="button" runat="server" id="btnSubmit"
  OnServerClick="btnSubmit_Click" onclick="if (confirm('Sure?')) ">
Run Code Online (Sandbox Code Playgroud)

真正正确的方法是使用Web控件:

<asp:Button runat="server"
        OnClick="btnSubmit_Click" OnClientClick="return confirm('Sure?')" Text="Submit" />
Run Code Online (Sandbox Code Playgroud)