2011-06-17 8 views
0

カレンダーで値が設定されたテキストボックスにカスタムバリデーターを適用しました。私はそれが過去の日付かどうかをチェックするサーバー側の検証を与えました。バリデーターは、送信ボタンをクリックすると起動されます。 args.IsValidの値はfalseに設定されていますが、コードはエラーメッセージを表示する代わりに、送信ボタンのclickイベントに入ります。 助けてください。カスタムバリデーターが機能しない

aspx.cs file 
protected void CustomValidatorIssueDate_ServerValidate(object source, ServerValidateEventArgs args) 
    { 
     string nowString = DateTime.Now.ToString("MM/dd/yyyy"); 
     DateTime now = Convert.ToDateTime(nowString); 
     DateTime issueDate = Convert.ToDateTime(args.Value); 
     if (issueDate.CompareTo(now) > 0) 
     { 
      args.IsValid = true; 
     } 
     else 
     { 
      args.IsValid = false; 
     } 
    } 

aspx file 

<asp:TextBox ID="TextBoxIssueDate" runat="server" Width="214px"></asp:TextBox> 
        <asp:CustomValidator runat="server" ControlToValidate="TextBoxIssueDate" 
         ErrorMessage="Issue Date cannot be past date" 
         onservervalidate="CustomValidatorIssueDate_ServerValidate" 
         ID="CustomValidatorIssueDate" Display="Dynamic" SetFocusOnError="True" ></asp:CustomValidator> 
+0

あなたが参照しているコードを提供することは可能ですか? – stephenbayer

+1

あなたはargs.YsValidをチェックしていて、何かしていないのですか? IsValid == falseの場合、メソッドをバイパスすることを期待していますか? –

+0

あなたが話しているコードを投稿してください。バリデータコントロールのaspxとテキストボックスが便利です –

答えて

0

あなたのonclickイベントハンドラはfalseIsValidを設定するだけでバイパスされることはありません。

IsValidのイベントハンドラ内でチェックする必要があります。

if(Model.IsValid) 
{ 
} 

(またはそれに類似するもの)。