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

今私は、消費者がMyCustomControla を使用して、(クライアントで) フォームが送信されたときにRequiredFieldValidator内部が確実に入力されるようにしようとしています。_textbox

私が試したこと:

  • クラスに を追加し、<ValidationProperty("Text")>で使用します(こちらを参照)MyCustomControlControlToValidate="customControlID"RequiredFieldValidator
  • バリデーターを直接アタッチするControlToValidate="customControlID:textbox"だけでなく、ControlToValidate="customControlID_textbox"
  • 子コントロールとして自身を追加するIsRequired属性を追加MyCustomControlRequiredFieldValidator.ControlToValidate = _textbox.ID

ValidationProperty3番目のアプローチは機能しているように見えますが(まだ調べていないjavascriptエラーがいくつかあります)、最初のアプローチを(属性を使用して)機能させたいと思っています。

TLDR:ValidationProperty属性を使用して、カスタム複合コントロールでクライアント側の検証を行う方法はありますか?

4

1 に答える 1

1

コードは ValidationProperty 属性で動作します (少なくとも VS 2010 を実行する簡略化されたバージョン)。RequiredFieldValidator の Text プロパティを定義して、フィールドが無効な場合にメッセージが実際に表示されるようにしてください。

検証の概要に関するコメントに基づいて編集:

RequiredFieldValidator、ValidationSummary、およびポストバックを起動するコントロールに対して ValidationGroup プロパティが設定されている (および同じである) ことを確認します。

于 2012-08-22T15:29:34.963 に答える