Это правильный и простой способ сделать это:
Создайте вспомогательный метод в вашем приложении (скажем, в пространстве имен Utlity):
Public Shared Sub PreventMultipleClicks(ByRef button As System.Web.UI.WebControls.Button)
button.Attributes.Add("onclick", "this.disabled=true;" & button.Page.ClientScript.GetPostBackEventReference(button, String.Empty).ToString)
End Sub
Теперь из кода за каждой из ваших веб-страниц вы можете просто позвонить:
Utility.PreventMultipleClicks(button1)
где button1 - это кнопка, которую вы хотите предотвратить несколькими нажатиями.
Для этого просто устанавливается обработчик нажатия: this.disabled = true
, а затем добавляет кнопки собственного обработчика обратной записи, так что мы получаем:
onclick="this.disabled=true";__doPostBack('ID$ID','');"
Это не нарушает поведение страницы по умолчанию и работает во всех браузерах, как и ожидалось.
Наслаждайтесь!