2012-02-02 4 views
4

Page.IsValidとargs.IsValidはそれぞれに依存していますか?Page.IsValidとargs.IsValidの関係は何ですか?

args.IsValid = "true"の場合、Page.IsValidは "true"にする必要があります。

そしてofcourseの逆: 場合Page.IsValid =「true」を

+0

実際に何が行われているかを確認するためにメソッドを逆コンパイルしてみましたか? –

+0

M.Babcock -decompiling ??? – Michael

+1

[ILSpy](http://wiki.sharpdevelop.net/ILSpy.ashx)または[JustDecompile](http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source= Web&cd = 1&sqi = 2&ved = 0CC4QFjAA&url = http%3A%2F%2Fwww.telerik.com%2Fproducts%2Fdecompiler.aspx&ei = 5hAqT7j2O6ersAKQ7IyNDg&usg = AFQjCNGS8oaJtbgxshAC-2iBxQRs-igL0g)。そのうちの1つを.NET DLLの1つをポイントすると、その動作方法を表すC#ソースコードが表示されます。 –

答えて

1

Page.IsValid以下の例を参照してください。それ以外の場合はfalseです。

がtrueを返すために、このプロパティの

MSDN doc.を読んで、すべての検証サーバーコントロールは で、現在の検証グループが正常に検証する必要があります。 メソッドを呼び出すか、または フォーム処理を開始するASP.NETサーバーコントロールの OnServerClickイベントハンドラで、CausesValidationプロパティをtrueに設定した場合にのみ、このプロパティをチェックする必要があります。

ServerValidationハンドラ;入力の検証(args.Value)が成功または失敗した場合は、それぞれtrueまたはfalseServerValidateEventArgument.IsValidプロパティを設定できます。

MSDN Doc

あなたの検証ルーチンが終了したら、 にIsValidプロパティを使用して、Valueプロパティで指定された値が 検証を通過したかどうかを示します。この値は、CustomValidatorコントロールに関連付けられた入力コントロール が検証に合格するかどうかを決定します。

2

どちらのページに適用Page.IsValid実装で異なる静かで、args.isValidは、カスタム検証のためのものであり=「true」をargs.IsValidので、ページの検証が成功したときにtrueを返します(読み取り専用)

<%@ Page Language="C#" AutoEventWireup="True" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title>CustomValidator ServerValidate Example</title> 
<script runat="server"> 

     void ValidateBtn_OnClick(object sender, EventArgs e) 
     { 

     // Display whether the page passed validation. 
     if (Page.IsValid) 
     { 

      Message.Text = "Page is valid."; 

     } 

     else 
     { 

      Message.Text = "Page is not valid!"; 

     } 

     } 

     void ServerValidation(object source, ServerValidateEventArgs args) 
     { 

     try 
     { 

      // Test whether the value entered into the text box is even. 
      int i = int.Parse(args.Value); 
      args.IsValid = ((i%2) == 0); 

     } 

     catch(Exception ex) 
     { 

      args.IsValid = false; 

     } 

     } 

    </script>  

</head> 
<body> 

    <form id="form1" runat="server"> 

     <h3>CustomValidator ServerValidate Example</h3> 

     <asp:Label id="Message" 
      Text="Enter an even number:" 
      Font-Names="Verdana" 
      Font-Size="10pt" 
      runat="server" 
      AssociatedControlID="Text1"/> 

     <br /> 

     <asp:TextBox id="Text1" 
      runat="server" /> 

     &nbsp;&nbsp; 

     <asp:CustomValidator id="CustomValidator1" 
      ControlToValidate="Text1" 
      Display="Static" 
      ErrorMessage="Not an even number!" 
      ForeColor="green" 
      Font-Names="verdana" 
      Font-Size="10pt" 
      OnServerValidate="ServerValidation" 
      runat="server"/> 

     <br /> 

     <asp:Button id="Button1" 
      Text="Validate" 
      OnClick="ValidateBtn_OnClick" 
      runat="server"/> 

    </form> 

</body> 
</html> 
関連する問題