У меня есть aspx-страница, на которой несколько одинаковых пользовательских контролов. Пользовательский контроль содержит текстовое поле с валидатором обязательного поля. Валидатор работает, но setonfocus = "true", похоже, не работает, более того, кнопка aspx page, когда валидатор показывает сообщение об ошибке, кнопка все еще запускает код позади.
Вот как выглядит страница aspx для пользовательского элемента управления и кнопки.
ucTB:ucTextBox ID="ucTextR" runat="server" ValidationGroup="txtRequired" Required="_true"
asp:Button ID="btnSave" runat="server" Text="Click" ValidationGroup="txtRequired"
и валидатор usercontrol
asp:RequiredFieldValidator ID="rfTextBox" runat="server" ControlToValidate="txtTextBox"
SetFocusOnError="true" ErrorMessage="Required Field" EnableClientScript="false"
пользовательский элемент управления был подключен для получения валидатора со страницы aspx и использования его в пользовательском контроле ... что-то вроде этого
Public Property ValidationGroup() As String
Get
Return CType(ViewState("ValidationGroup"), String)
End Get
Set(ByVal Value As String)
ViewState("ValidationGroup") = Value
End Set
End Property
Protected Sub AssignValidation()
For Each control As Control In Me.Controls
Dim [property] As PropertyInfo = control.[GetType]().GetProperty("ValidationGroup")
If [property] Is Nothing Then
Continue For
End If
[property].SetValue(control, ValidationGroup, Nothing)
Next
End Sub
и я загружаю AssignValidation на page_load
в любом случае .. надеюсь, это информация, которая вам нужна, чтобы указать мне правильное направление.
Что я хочу сделать, так это если требуется валидатор поля, чтобы поместить фокус на usercontrol, если в текстовом поле usercontrol ничего нет, а также чтобы кнопка на странице aspx не запускалась ... как я думаю, это так ведет себя, если вы используете валидатор на странице aspx без usercontrol
спасибо
Shannon