CustomValidator
* 標準の検証コントロールでは対応できない独自の検証ロジックを実装するためのコントロール
主なプロパティ
* EnableClientScript => trueの場合(デフォルトはtrue)、各検証コントロールはクライアント側で スクリプトを使ってチェックをし、サーバ上でもチェックを行う。 * ClientValidationFunction => クライアント側の検証メソッドをClientValidationFunction属性で 定義することができる * ValidateEmptyText => 空文字の時にも検証するかどうか
サンプル1:全角・半角混合用バイトチェック付TextBox
WebUserControl1.ascx
Public Class WebUserControl1 Inherits System.Web.UI.UserControl Public Event ServerValidate(ByVal sender As Object, ByVal e As EventArgs) Public Property MaxLength() As Integer Set(value As Integer) Me.TextBox1.MaxLength = value End Set Get Return Me.TextBox1.MaxLength End Get End Property Public Property ValidationGroup() As String Set(value As String) Me.CustomValidator1.ValidationGroup = value End Set Get Return Me.CustomValidator1.ValidationGroup End Get End Property Protected Sub CustomValidator1_ServerValidate(source As Object, args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate Dim encoding As Encoding = encoding.GetEncoding("Shift_JIS") Dim byteNumber As Integer = encoding.GetByteCount(Me.TextBox1.Text) Dim isOver As Boolean = False If byteNumber > Me.TextBox1.MaxLength Then isOver = True End If args.IsValid = Not isOver End Sub End Class
参考資料
http://www.atmarkit.co.jp/fdotnet/dotnettips/012strcount/strcount.htmlhttp://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html
サンプル2:マスタ重複チェック
vb
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If Page.IsValid Then ' 検証に成功した場合の処理を記述 End If End Sub Protected Sub CustomValidator1_ServerValidate(source As Object, args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate Dim exist As Boolean = Me.DummyExists() ' 検証結果は、ServerValidateEventArgsオブジェクトのIsValidプロパティにTrue/Falseでセットする args.IsValid = Not exist End Sub Private Function DummyExists() As Boolean ' 重複しているとダミーで返す Return True End Function
デザイナ部
<asp:TextBox ID="TextBox1" runat="server" ValidationGroup="test"></asp:TextBox> <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="error" ClientValidationFunction="CustomValidator1_ServerValidate" ControlToValidate="TextBox1" EnableClientScript="False" ValidationGroup="test">*</asp:CustomValidator> <br /> <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="test" />
参考資料
http://www.atmarkit.co.jp/fdotnet/dotnettips/244aspcustvali/aspcustvali.htmlhttp://www.atmarkit.co.jp/fdotnet/dotnettips/279aspcustvali/aspcustvali.html