Asp.net глуп, потому что, когда элемент управления отключен, с ним не случится всякого рода вещи.
В этом случае код js, вызывающий проверку на стороне клиента, не будет создан для отключенной кнопки.
Если вы попытаетесь вручную добавить клиентский js-код из кода позади,
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
registerButton.OnClientClick = String.Format("javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('{0}', '', true, '', '', false, false))", registerButton.UniqueID)
End Sub
Это не будет работать, поскольку asp.net не будет отображать все атрибуты для отключенного элемента управления.
Тогда есть два решения. Либо отключите элемент управления с помощью JS на стороне клиента, либо добавьте JavaScript, чтобы выполнить обратную передачу с проверкой на стороне клиента.
Что я сделал для своей программы, так это добавил код для создания js-кода, чтобы отключить кнопку на стороне клиента:
If btnSubmit.Enabled = False Then
'Asp.net will not render all the attributes for a control that is disabled. Even if you
'try to set the OnClientClick attribute manually in code behind for the control, it will
'not work. Asp.net will not render the attribute. This is a workaround for this problem.
btnSubmit.Enabled = True
strJavaScript &= "btnSubmit.disabled = true;"
End If
ClientScript.RegisterStartupScript(Page.GetType(), "myStartupScript", strJavaScript, True)
Обратите внимание, что btnSubmit - это переменная javascript, которая уже определена в моем клиентском коде.