2012-08-22 76 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