0

我有一个 aspx 页面,页面上有几个相同的用户控件。用户控件包含一个文本框,上面有一个必填字段验证器。验证器工作,但 setonfocus="true" 似乎没有工作,此外,当验证器显示错误消息时,按钮的 aspx 页面,按钮仍然触发后面的代码。

就用户控件和按钮而言,这是 aspx 页面的外观。

ucTB:ucTextBox ID="ucTextR" runat="server" ValidationGroup="txtRequired" Required="_true" 

asp:Button ID="btnSave" runat="server" Text="Click" ValidationGroup="txtRequired" 

和用户控件验证器

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

我在 page_load 上加载了 AssignValidation

无论如何..希望这是您需要指出我正确方向的信息。

我想要做的是,如果用户控件文本框中没有任何内容并且 aspx 页面上的按钮不会触发,则所需的字段验证器是否将焦点放在用户控件上。就像我认为它的行为,如果你在没有用户控件的 aspx 页面上使用验证器

谢谢香农

4

1 回答 1

0

您不能将用户控件设置为可见,因为它不是可见容器。您可以通过编程方式自己设置焦点。看到这个:

http://forums.digitalpoint.com/showthread.php?t=282224

或者,您可以通过编程将验证器设置为用户控件中文本框的 ID;在用户控件代码隐藏中公开一个 textboxID 属性,该属性返回文本框的 ID,并让您的页面将验证器的 controltovalidateID 分配给它。

于 2010-07-22T18:59:35.593 回答