1

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

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使用 aRequiredFieldValidator来确保在_textbox提交表单时(在客户端)填写内部。

我试过的:

  • 添加<ValidationProperty("Text")>MyCustomControl类并用于ControlToValidate="customControlID"RequiredFieldValidator这里
  • ControlToValidate="customControlID:textbox"通过以及直接附加验证器ControlToValidate="customControlID_textbox"
  • 添加了一个IsRequired属性MyCustomControl,将其RequiredFieldValidator作为子控件添加到其中.ControlToValidate = _textbox.ID

第三种方法似乎确实有效(有一些我尚未调查的 javascript 错误),但我真的很想让第一种方法工作(使用ValidationProperty属性)。

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

4

1 回答 1

1

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

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

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

于 2012-08-22T15:29:34.963 回答