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