自定义复合控件上的RequiredFieldValidators

时间:2012-08-22 14:48:58

标签: asp.net vb.net validation user-controls

我设计了一个自定义复合控件。为简单起见,让我们说它看起来像这样:

Public Class MyCustomControl
    Inherits CompositeControl

Private _textbox As TextBox

Public Property Text As String
    Get
        EnsureChildControls()
        Return _textbox.Text
    End Get
    Set(value As String)
        EnsureChildControls()
        _textbox.Text = value
    End Set
End Property

Protected Overrides Sub CreateChildControls()
    _textbox = New TextBox() With {.ID = "textbox"}
    Controls.Add(_textbox)
End Sub

现在我正在尝试允许MyCustomControl的使用者使用RequiredFieldValidator来确保在表单提交时(在客户端上)填写内部_textbox

我尝试过:

  • <ValidationProperty("Text")>添加到MyCustomControl班级并在ControlToValidate="customControlID"上使用RequiredFieldValidator(请参阅here
  • 通过ControlToValidate="customControlID:textbox"以及ControlToValidate="customControlID_textbox"
  • 直接附加验证器
  • IsRequired添加了MyCustomControl属性,该RequiredFieldValidator属性将.ControlToValidate = _textbox.ID作为带有ValidationProperty
  • 的子控件添加

第三种方法确实有效(我还有一些javascript错误尚待研究)但我真的希望FIRST方法有效(使用ValidationProperty属性)。

TLDR:有没有办法使用{{1}}属性在自定义复合控件上实现客户端验证?

1 个答案:

答案 0 :(得分:1)

您的代码使用ValidationProperty属性(至少是运行VS 2010的简化版)。确保已定义RequiredFieldValidator的Text属性,以便在字段无效时实际显示消息。

根据评论关于验证摘要进行编辑:

确认您的ValidationGroup属性已设置(并且相同),用于RequiredFieldValidator,ValidationSummary以及将触发回发的控件。