HtmlButton处理程序在单击时触发两次(当AutoEventWireup ="True"时)

Ton*_*ich 17 asp.net

我有一个html按钮,见下文.单击它并且AutoEventWireup ="true"时,Save_Click单击处理程序将被触发两次.当AutoEventWireup ="False"时,它会触发一次.

为什么要开两次?该按钮未注册两次,并且没有添加事件处理程序的代码.使用母版页而不是Ajax.

<button id="Save" accesskey="v" type="submit" runat="server" onserverclick="Save_Click"></button>
Run Code Online (Sandbox Code Playgroud)

And*_* F. 27

现在(至少在.net 4中)更好:

<button runat="server">
Run Code Online (Sandbox Code Playgroud)

默认情况下,它的行为类型为type ="submit"(点击时触发两次),因此为了使其正常工作,我们应该明确设置type ="button",即:

<button id="ButtonSubscribe2" runat="server" type="button" onserverclick="Save_Click"></button>
Run Code Online (Sandbox Code Playgroud)


Ton*_*ich 13

好的,我发现HTMLButton会为onserverclick事件和type ="submit"触发.当我删除type ="submit"时,它会触发一次.这种古怪的行为花了我很长时间才发现!

  • 在我的情况下,我没有告诉它使用type ="submit",我只是没有指定类型.我明确指定了type ="button",然后修复了它. (6认同)
  • 根据您正在运行的ASP.NET版本或您正在使用的浏览器,这有一个有趣的不同行为.例如,我没有指定`type`,它在Fireofox上运行正常,但是Chrome认为它是`submit`而不是`button` (2认同)