Почему в ASP.NET происходит событие нажатия кнопки при обновлении страницы?
На моем веб-сайте ASP.Net у меня есть кнопка. Когда я нажимаю кнопку, а затем перезагружаю страницу через браузер, срабатывает событие нажатия кнопки. Будет проблема, пожалуйста, помогите мне.
Ответы
Ответ 1
Если я правильно понял.
У вас есть веб-форма с кнопкой.
Вы нажимаете кнопку, которая вызывает сообщение назад, и обработчик события для нажатия кнопки для выполнения.
Затем вы нажмете обновление, и страница снова обработает обработчик событий.
Причиной этого является то, что вы обновляете последнюю информацию, отправленную на сервер. Какая информация об щелчке на кнопке __doPostback. Вот почему вы снова видите событие кнопки.
Ниже приведена статья о том, как обнаружить обновление после обратной передачи.
Ответ 2
Это потому, что нажатие этой кнопки отправляет запрос POST на вашу страницу. Данные POST хранятся в заголовках http, а при обновлении они снова отправляются на сервер.
Ваш браузер должен предупредить вас, когда вы попытаетесь обновить страницу.
Ответ 3
Это по дизайну. Когда вы нажимаете кнопку на стороне сервера (с атрибутом runat="server"
), щелчок вызовет обратную передачу и произойдет событие нажатия кнопки.
Если вам нужно поведение на стороне клиента, вам нужно использовать атрибут OnClientClick
, как описано в this Статья MSDN (Как сделать: Ответьте на события управления веб-сервером Button в клиенте Script).
Ответ 4
Если это действительно важно для кого-то, они могут обновить страницу снова с помощью Response.Redirect(). Это самое простое решение, которое я смог найти.
Ответ 5
У меня была такая же проблема, и она была решена, поставив кнопку asp: AsyncPostBackTrigger в updatePanel.
Ответ 6
Если вы хотите обновить часть своей страницы, тогда установите элемент управления внутри UpdatePanel
, если элемент управления вызывает PostBack
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button CssClass="btn btn-default"
onClick="uploadAttachmentToList" runat="server"
ID="btnUpload" ClientIDMode="Static" Text="Upload"
/>
</ContentTemplate>
</asp:UpdatePanel>
Ответ 7
Самый простой способ решить эту проблему - перенаправить вашу страницу на какой-либо URL или обновить текущую страницу с помощью Response.Redirect(Request.RawUrl);