Странное поведение кнопки asp.net на Firefox двойного нажатия - PullRequest
1 голос
/ 18 октября 2011

Если у меня есть эта кнопка asp.net:

<asp:Button ID="Button_Save" Width="150px" OnClick="Button_Save_Click" runat="server" Text="Save" />

Чтобы пользователь не мог дважды нажать кнопку, чтобы вставить две записи данных, я добавил это в коде:

Button_Save.Attributes.Add("onclick", "this.disabled='true';" + ClientScript.GetPostBackEventReference(Button_Save_Data, null) + ";");

Отлично работает с IE и Chrome.Однако в Firefox каждый раз, когда пользователь нажимает кнопку один раз, я вставляю две записи данных.

После некоторого времени поиска в Google я изменил кнопку таким образом, добавив: UseSubmitBehavior="false":

<asp:Button ID="Button_Save" Width="150px" UseSubmitBehavior="false" OnClick="Button_Save_Click" runat="server" Text="Save" />

Тогда он также работает с Firefox, вставлена ​​только одна запись данных.Но тогда мне придется добавить эту настройку для каждой кнопки в моем веб-приложении.Это требует много работы.

Однако, я думаю, что это действительно большая проблема, если это всегда имеет место с приложением asp.net, работающим на Firefox.Или я что-то не так реализовал?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Было бы лучше добавить проверки в ваш код SAVE, чтобы избежать дублирования POST. Я использовал код, похожий на ваш, и у меня все еще были повторяющиеся записи, потому что кто-то нажал кнопку «Обновить» не вовремя.

EDIT : Вот код, который я использую. Ключ должен соответствовать значению на сервере со значением, возвращаемым в обратной передаче.

В Page_Load:

If Not IsPostBack Then
    Session("rcdupdate") = Server.UrlEncode(System.DateTime.Now.ToString)
End If

In Page_Prerender

ViewState("rcdupdate") = Session("rcdupdate")

А в подпрограмме Save

If Session("rcdupdate").ToString = ViewState("rcdupdate").ToString Then
   ... write the data to the database ...
   Session("rcdupdate") = Server.UrlEncode(System.DateTime.Now.ToString)
End If
0 голосов
/ 18 октября 2011

Вы можете расширить asp:button и добавить новые функции, а затем полностью / заменить все свои asp:buttons. В дальнейшем вы можете поменять все кнопки в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...