2012-08-22 34 views
1

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

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类并在RequiredFieldValidator使用ControlToValidate="customControlID"(见here
  • 直接通过ControlToValidate="customControlID:textbox"附加验证以及ControlToValidate="customControlID_textbox"
  • 加入IsRequired属性到MyCustomControl它增加了它自己的RequiredFieldValidator作为子控件.ControlToValidate = _textbox.ID

第三种方法似乎工作(有一些JavaScript错误,我还没有看过),但我真的想让第一种方法工作(使用ValidationProperty属性)。

TLDR:有没有什么办法可以使用ValidationProperty属性来实现客户端对自定义组合控件的验证?

回答

1

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

编辑基于评价关于验证摘要:你的ValidationGroup属性设置

确认(和相同)为您的RequiredFieldValidator,的ValidationSummary,以及将触发回发的控制。

+0

我正在使用'ValidationSummary'显示错误,以及'RequiredFieldValidator'的'ErrorMessage'属性。当我提交页面时,无论文本框的值如何,它都会通过。 – jbabey

+0

看到这个SO链接,它可能是你的问题:http://stackoverflow.com/questions/9677883/validation-summary-not-showing – N0Alias

+0

验证总结工作正常,如果我在普通的'输入使用相同的'RequiredFieldValidator'键入=“文本”框没有复合控制。 – jbabey