似乎有时(但并非总是)我的按钮点击事件被触发两次。事实上,它似乎有时会发生,但并非总是令人困惑。这里是我的按钮:按钮点击点击事件两次
<button id="btnSave" onserverclick="btnAddUser_Click" name="btnSave" type="submit" style="font-size:11px;font-family:Verdana;font-weight:bold;" runat="server">Save</button>
似乎有时(但并非总是)我的按钮点击事件被触发两次。事实上,它似乎有时会发生,但并非总是令人困惑。这里是我的按钮:按钮点击点击事件两次
<button id="btnSave" onserverclick="btnAddUser_Click" name="btnSave" type="submit" style="font-size:11px;font-family:Verdana;font-weight:bold;" runat="server">Save</button>
改为使用本机ASP.NET按钮。
<asp:Button id="btnSave" runat="server" OnClick="btnAddUser_Click"
style="font-size:11px;font-family:Verdana;font-weight:bold;" Text="Save" />
我使用的是JQuery主题,所以我使用HTML按钮而不是.NET版本。 – user517406 2011-04-18 10:45:24
@ user517406:您仍可以使用原生的ASP.NET控件jQuery的主题,在这里看到:[应用jQuery UI的按钮样式到ASP.NET按钮(http://stackoverflow.com/questions/2672001/how-to-apply -jquery-UI-按钮到aspbutton) – Town 2011-04-18 10:47:17
另一个人评论这个线程和我有同样的问题,这并不JQuery的主题化添加到我的.NET的按钮,所以我不知道。 – user517406 2011-04-18 13:08:16
看起来像接线事件处理程序的问题。 http://geekswithblogs.net/TimH/archive/2006/10/23/94874.aspx
试试如果你只能在你的后端有事件处理程序。此外,问题可能是由于类型=“提交”。检查是否将它更改为Button可修复问题。
如果使用的是背后的代码,请不要在ASP代码中使用的OnClick,<button id="btnSave" name="btnSave" type="submit" style="font-size:11px;font-family:Verdana;font-weight:bold;" runat="server">Save</button>
我刚刚碰到同样的问题,并想指出的是,取出从您的活动“把手btnSave.Click”将防止它被调用两次。相反
Protected Sub btnSave_OnClick(ByVal sender As Object, ByVal e As System.EventArgs)
'Do Something
End Sub
这个:例如,在后面的代码中使用此
Protected Sub _btnSave_OnClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
'Do Something
End Sub
它适用于我,我使用VS2015。 – terenf 2018-01-29 09:00:46
我有同样的问题,我花了一段时间来看着办吧! 如果你添加type =“button”到你的按钮,它似乎解决了这个问题。
hmm,type =“button”应该是html中按钮标签的无效属性,我想? – 2012-12-12 23:45:19
你可能是对的,但似乎在这里验证。不知道... – Brandsdal 2012-12-14 01:14:29
...而且,我当然是错的!类型可以是按钮,重置或提交。这非常合理。 – 2012-12-14 10:25:20
一个可能的原因:
检查您的.aspx源代码中的按钮声明。如果您有'runat=server'
和onclick="button1_click"
,并且您的代码隐藏(即.aspx.vb), 中有一个事件处理程序,它将导致该事件被触发两次。这里有一个例子在xxx.aspx:
<asp:Button id="button1" onclick="button1_Click" runat="server" Text="Click Me!"></asp:Button>
这个声明应该是:
<asp:Button id="button1" runat="server" Text="Click Me!"></asp:Button>
祝你好运!
如果您使用的是asp.net,只需使用asp:button .....其干净简单。无论我在网上读到什么理由,服务器端处理程序应该被调用两次是没有意义的。 当我添加type =“button”时,问题就解决了。但是当我按下回车键时,表单不会被提交。所以这是另一个需要解决的问题。使用asp:按钮处理所有这些。
正确的方法(在ASP.NET Web窗体页),如已经指出的几个其他的贡献者,是对类型=“按钮”属性添加到元素和onserverclick关联事件委托处理程序。
例如:
<button type="button" id="btnSave" runat="server" onserverclick="btnSave_ServerClick" class="btn btn-success btn-label">
<i class="fa fa-save"></i>Save
</button>
希望这有助于。
我想我只是想出了一个解决方案。删除name="btnSave"
或将其更改为"btnSave1"
。它会工作。
我有同样的问题,但完全不同的原因。我将容器面板的defaultbutton属性设置为按钮触发两次。除去从天冬氨酸的“DefaultButton”属性后:面板问题就解决了。
刚把钻研回到老派的ASPX再次发现了这个问题。
我的形式成立了这个样子。
<asp:UpdatePanel ID="login" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="forgotPassword" runat="server" DefaultButton="lbtnSendLoginDetails" Visible="False">
<asp:LinkButton ID="lbtnSendLoginDetails" runat="server" >
后面的代码是
Protected Sub lbtnSendLoginDetails_Click(sender As Object, e As EventArgs) Handles lbtnSendLoginDetails.Click
对我来说,答案是从面板上卸下DefaultButton属性,并添加
TabIndex="4"
到LinkButton的。
为什么你没有使用asp:button而不是按钮? – 2011-04-18 10:43:23