Ответ 1
У меня была такая же проблема, и мне потребовалось некоторое время, чтобы понять это! Если вы добавите к вашей кнопке type = "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>
У меня была такая же проблема, и мне потребовалось некоторое время, чтобы понять это! Если вы добавите к вашей кнопке type = "button", это, похоже, устранит проблему.
Я только что наткнулся на эту же проблему и хотел указать, что удаление "Handles 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
Вместо этого используйте собственную кнопку ASP.NET.
<asp:Button id="btnSave" runat="server" OnClick="btnAddUser_Click"
style="font-size:11px;font-family:Verdana;font-weight:bold;" Text="Save" />
Похож на проблему с подключением обработчиков событий. http://geekswithblogs.net/TimH/archive/2006/10/23/94874.aspx
Попробуйте, если вы можете просто обработать события в своем конце. Кроме того, проблема может быть связана с типом = "Отправить". Проверьте, не изменилась ли эта кнопка на кнопку только.
Если вы используете код позади, не используйте OnClick в теге ASP, <button id="btnSave" name="btnSave" type="submit" style="font-size:11px;font-family:Verdana;font-weight:bold;" runat="server">Save</button>
Одна из возможных причин:
Проверьте объявление своей кнопки в источнике .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>
Удачи!
Решение уже упоминалось в другом ответе. Используйте type = "button" вместо отправки
Вот пример кода
<span class="input-group-btn">
<button id="btnLoadCustomerFile" class="btn btn-default" type="button" runat="server" onserverclick="btnLoadCustomerFile_Click" >Load</button>
</span>
И внутренний код для обработки по клику
protected void btnLoadCustomerFile_Click(object sender,EventArgs e)
{
LoadCustomerFile();
}
Правильный способ (на странице веб-формы ASP.NET), как уже указывалось двумя другими участниками, заключается в добавлении к элементу атрибута type = "button" и ассоциировать a 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 "из Asp: Panel проблема решена.
Просто пришлось снова вернуться в старый школьный 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 из Panel и добавить
TabIndex="4"
в LinkButton.
У меня была похожая проблема. Я использовал Я изменил это на не работал.
Но когда я изменил это на это сработало.
Спасибо Этот пост помог мне.
В моем случае это происходит со мной, когда я использую Chrome, но не в Firefox
Это потому, что тип кнопки - отправить. Вам нужно изменить его на кнопку, чтобы решить события кнопки, запускающиеся дважды. Обратитесь к этому блогу для дальнейшего объяснения.
https://mzulkamal.com/blog/asp-net-web-form-html-button-tag-fires-two-times-s
Если вы используете asp.net, просто используйте asp: button..... его чистый и простой. Независимо от того, какое оправдание я читаю в сети, нет смысла, что обработчик на стороне сервера должен вызываться дважды. Когда я добавляю type = "button", проблема решена. Однако форма не отправляется, когда я нажимаю клавишу ввода. Так что еще одна проблема должна быть решена. Использование кнопки asp: позаботится обо всем этом.