2012-04-25 10 views
0

私はASP.NET Webフォームアプリケーションを持っています。適用方法ASP.NETでサーバー側の関数を呼び出すことでクライアント側の検証

私は様々なTextBoxFormを持っているし、今私は同じValidationGroupに属する彼らにasp:RequiredFieldValidatorをいくつかリンクされています。

TextBoxに、関連するエラーメッセージとともに追加の検証を適用する必要があります。 具体的には、TextBoxの中のテキストがGuidかどうかをチェックする必要があります。 Morevoerはこのチェックを即座に実行する必要があります。つまり、ユーザーがTextBoxからカーソルを移動するとすぐに、submitを押す必要なく、検証を実行する必要があります。

  1. 私はどのようにしてIsGuid(string guid)関数をJavascriptから呼び出すことができますか?私は

  2. (例えば、私はTextBox.Textが許可されていないcarachtersとな長さ< Nを持っている場合、メッセージを表示させたい)の検証として、二つの異なるエラーメッセージを添付することができ、それが簡単にで、この検証を実装する方法を

  3. jQueryまたはASP.NETバリデータ

誰か他の人がその実装について考えている場合は、お気軽にご提案ください。ありがとう!

答えて

1

ReqularExpressionValidatorコントロールを使用できます。

Hereあなたは、この場合には、同じ制御にあなたのテキストボックスを必要な数だけバリデータを適用することができ

^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$ 
+0

thanskについては、私のサーバーサイドのIsGuid関数で既に同じRegexを使用しています。 TextBoxのテキストを非同期にテキストに送るためにAJAXを使用する方法はありますか? – CiccioMiami

+0

サーバーコードを使用する必要はありません。 RegularExpressionValidatorコントロールは、RequiredFieldValidatorと同じ領域からのものです。それを使わない理由はありますか? –

+0

ただし、DBアクセスを使用して、より複雑なビジネスルールを実装する必要がある別の検証が必要な場合に備えて、その場合、JavaScriptから呼び出すにはサーバ機能が必要です。 – CiccioMiami

0

正規表現。

このシナリオでは、カスタムバリデーターは、ニーズをカバーするように開発した関数を使用して検証を実行できるようにするための方法です。この簡易tutorialをご覧ください。

UPDATE 1:サーバー側の検証

これは、のCustomValidatorの宣言で、サーバー側の関数を呼び出す方法です: "PrimeNumberCheck" VB関数の

<asp:CustomValidator runat="server" id="custPrimeCheck" 
    ControlToValidate="txtPrimeNumber" 
    OnServerValidate="PrimeNumberCheck" 
    ErrorMessage="Invalid Prime Number" /> 

例:

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 

UPDATE 2:クライアント側検証

これは、それはのCustomValidatorの宣言で、サーバー側の関数を呼び出す方法です: "CheckPrime" JavaScriptの機能の

<asp:CustomValidator runat="server" id="custPrimeCheck" 
    ControlToValidate="txtPrimeNumber" 
    ClientValidationFunction="CheckPrime" 
    ErrorMessage="Invalid Prime Number" /> 

例:

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に感謝これを認識している。

+1

このサーバー側の機能は..サーバー側と呼ばれています。クライアントでは呼び出されません。素数をチェックするjavascript関数を作成する必要があります。 –

+0

@AdrianIftode私は混乱するかもしれませんが、私が知っている限り、この答えはこの質問に答えています。ASP.NETでサーバー側の関数を呼び出すことによってクライアント側の検証を適用する方法。右? – aleafonso

+0

完全には対応していません。サーバー側のコードを呼び出すことはできますが、カスタムバリデーターを使用することはできません。 AJAX、WebMethodsを確認してください。カスタムバリデーターにはjavascript関数も必要です。この関数は、AJAXを使用してサーバーサイドコードを呼び出すことができます。 –

関連する問題