我设计了一个自定义复合控件。为简单起见,让我们说它看起来像这样:
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}}属性在自定义复合控件上实现客户端验证?
答案 0 :(得分:1)
您的代码使用ValidationProperty属性(至少是运行VS 2010的简化版)。确保已定义RequiredFieldValidator的Text属性,以便在字段无效时实际显示消息。
根据评论关于验证摘要进行编辑:
确认您的ValidationGroup属性已设置(并且相同),用于RequiredFieldValidator,ValidationSummary以及将触发回发的控件。