必要な数の Validators を同じコントロール (この場合は TextBox) に適用できます。
このシナリオでは、ニーズに対応するために開発した任意の関数を使用して検証を実行できるため、カスタム バリデーターが適しています。この簡単なチュートリアルをご覧ください。
更新 1 : サーバー側の検証
これは、CustomValidator の宣言でサーバー側関数を呼び出す方法です。
<asp:CustomValidator runat="server" id="custPrimeCheck"
ControlToValidate="txtPrimeNumber"
OnServerValidate="PrimeNumberCheck"
ErrorMessage="Invalid Prime Number" />
「PrimeNumberCheck」VB 関数の例:
Sub PrimeNumberCheck(sender as Object, args as ServerValidateEventArgs)
Dim iPrime as Integer = Cint(args.Value), iLoop as Integer, _
iSqrt as Integer = CInt(Math.Sqrt(iPrime))
For iLoop = 2 to iSqrt
If iPrime mod iLoop = 0 then
args.IsValid = False
Exit Sub
End If
Next
args.IsValid = True
End Sub
更新 2 : クライアント側の検証
これは、CustomValidator の宣言でサーバー側関数を呼び出す方法です。
<asp:CustomValidator runat="server" id="custPrimeCheck"
ControlToValidate="txtPrimeNumber"
ClientValidationFunction="CheckPrime"
ErrorMessage="Invalid Prime Number" />
「CheckPrime」JavaScript 関数の例:
function CheckPrime(sender, args)
{
var iPrime = parseInt(args.Value);
var iSqrt = parseInt(Math.sqrt(iPrime));
for (var iLoop=2; iLoop<=iSqrt; iLoop++)
if (iPrime % iLoop == 0)
{
args.IsValid = false;
return;
}
args.IsValid = true;
}
これを知らせてくれた@AdrianIftodeに感謝します。