Application | |
HttpApplicationState = Page.Application | |
ASP 組み込みオブジェクトの Application に相当する HttpApplicationState クラスのインスタンスを返します。HttpApplicationState クラスのインスタンスには、ASP.NET アプリケーション内の複数のセッションや要求で共有できるグローバル情報が含まれています。HttpApplicationState クラスおよびそのメンバーの詳細については、第 13 章を参照してください。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、Page オブジェクトの Application プロパティを使用して Application オブジェクトに「名前/値」のペアを追加し、ラベルコントロールにその値を表示します。Page オブジェクトのすべてのプロパティは、そのページに関連付けられているすべてのコードに直接公開されます。したがって、Application プロパティにアクセスするために Page クラスを Page.Application のように明示的に指定する必要はありません。 |
|
Sub Page_Load( ) Application("Name") = "John Doe" Message.Text = "The value <em>" & CStr(Application("Name")) & _ "</em> has been added to the Application collection." End Sub |
|
メモ | |
HttpApplicationState インスタンスへのローカルオブジェクト参照を取得してアプリケーションで使用することもできますが、このプロパティの使用法としては、前述の例のように Application プロパティから直接アクセスする方法が一般的です。 |
|
Cache | ||||||||||||||
Cache = Page.Cache | ||||||||||||||
アプリケーションドメインのキャッシュを表す Cache クラスのインスタンスを返します。Cache プロパティを使用して、キャッシュにデータを追加したり、キャッシュからデータを取得することができます。 |
||||||||||||||
パラメータ | ||||||||||||||
|
||||||||||||||
例 | ||||||||||||||
次のコード例では、Page クラスの Cache プロパティを使用して Cache オブジェクトに「名前/値」のペアを 2 組追加し、Page オブジェクトの Cache プロパティを使用してこれらの値をラベルコントロールに表示します。 |
||||||||||||||
Sub Page_Load(o As Object, e As EventArgs) Cache("Name") = "John Doe" Cache("Age") = 42 Message.Text = CStr(Cache.Item("Name")) & " is " & _ CStr(Cache("Age")) & " years old." End Sub |
||||||||||||||
メモ | ||||||||||||||
Application オブジェクトと同様、Cache オブジェクトへは、アプリケーションで使用する Cache インスタンスへのローカルオブジェクト参照を取得してアクセスするよりも、Cache プロパティから直接アクセスする方法が一般的です。 |
||||||||||||||
第 13 章では、Application 状態コレクションよりも ASP.NET Cache を使用する方が適している場合、またその逆の場合について説明しています。 |
||||||||||||||
Cache クラスのメンバーは、次のとおりです。 |
||||||||||||||
|
||||||||||||||
ClientTarget | |
String = Page.ClientTarget | |
ASP.NET でのブラウザの自動検出機能をオーバーライドし、"machine.config" または "web.config" で設定されている種類のブラウザにページを強制的に表示させる文字列値を取得または設定します。ClientTarget プロパティに設定済みの値は次のとおりです。 |
|
|
|
パラメータ | |
|
|
例 | |
次のコード例では、Page クラスの ClientTarget プロパティを downlevel 値で初期化し、ASP.NET により不明な種類のブラウザでページを強制的に表示するようにします。この結果、HTML 3.2 互換の出力となります。次に、このコード例では、一連の機能がサポートされているかどうかを示すメッセージが表示されます。downlevel の場合、列挙されている機能はいずれもサポートされません。 |
|
Sub Page_Load( ) Page.ClientTarget = "downlevel" Message.Text = "Page is set to render for the " & _ Page.ClientTarget & " alias.<br/>" Message.Text &= "Supported features:<br/>" Message.Text &= " - JavaScript: " & _ Request.Browser.JavaScript & "<br/>" Message.Text &= " - ActiveX Controls: " & _ Request.Browser.ActiveXControls & "<br/>" Message.Text &= " - Frames: " & _ Request.Browser.Frames & "<br/>" End Sub |
|
メモ | |
ClientTarget は、@ Page ディレクティブの ClientTarget 属性を使用して指定することもできます。 |
|
この例の ClientTarget プロパティの値を ie4 に変更すると、列挙されているすべての機能がサポートされることを示すメッセージが表示されます。 |
|
大半のサーバーコントロールでは、すべてのブラウザに対して HTML 3.2 用の表示を生成しますが、検証コントロールなどのコントロールは ClientTarget の値に応じて異なる表示を生成します。ClientTarget プロパティが downlevel に設定されている場合は、検証はサーバーサイドで実行されます。したがって、ソースを表示する場合、クライアントサイドのスクリプトは検証に使用されません。 |
|
ClientTarget が uplevel に設定されている場合は、検証コントロールによりクライアントサイド JavaScript が生成され、クライアントサイドで検証が実行されます。 |
|
Context | |
HttpContext = Page.Context | |
現在の HTTP 要求のコンテキスト情報を保持している HttpContext インスタンスを返します。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、Context プロパティを使用して、現在ログインしているユーザーの名前を返します。この情報は、Page クラスの User プロパティを使用して取得することもできます。User プロパティは、現在の要求に関連付けられている HttpContext から派生します。 |
|
Sub Page_Load( ) Message.Text = "Currently logged in as: " & _ Context.User.Identity.Name End Sub |
|
メモ | |
このプロパティは、通常、ASP.NET 組み込みオブジェクト (Request や Response など) にアクセスする必要があるビジネスオブジェクトに対して、現在の要求に関する HttpContext への参照を渡すために使用されます。Application、Request、Response、Server、Session の各組み込みオブジェクトのほかに、HttpContext クラスを使用して、現在の HTTP 要求の Trace および User 情報にアクセスすることもできます。 |
|
EnableViewState | |
Boolean = Page.EnableViewState | |
ページの表示状態およびページに実装されているサーバーコントロールの表示状態をページが保持するかどうかを示すブール値を返すか、または設定します。このプロパティの初期設定値は True です。この場合、ページはその表示状態を保持します。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、@ Page ディレクティブの EnableViewState 属性を使用して EnableViewState を False に設定し、その値をページに表示します。 |
|
<%@ Page Language="vb" EnableViewState="True" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) If Page.EnableViewState = True Then Message.Text = "ViewState is enabled." Else Message.Text = "ViewState is disabled." End If End Sub </script> </head> <body> <form runat="server"> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
メモ | |
前述の例にあるように、EnableViewState プロパティは、@ Page ディレクティブの EnableViewState 属性を使用して指定することもできます。 |
|
ブラウザのソース表示機能を使用してページの HTML ソースを参照することで、EnableViewState プロパティによる効果を確認することができます。EnableViewState プロパティが False に設定されている場合、ソースは次のようになります。 |
|
<input type="hidden" name="_ _VIEWSTATE" value="dDwxMDA3MzE2MzEyOzs+" /> |
|
EnableViewState プロパティが True に設定されている場合、ソースは次のようになります。 |
|
<input type="hidden" name="_ _VIEWSTATE" value="dDwxMDA3MzE2MzEyO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDM+Oz47bDx0PHA8cDxsPF RleHQ7PjtsPFZhbHVlIG9mIHRoZSBFbmFibGVWaWV3U3RhdGUgcHJvcGVydHkgaXMgVHJ1ZTs +Pjs+Ozs+Oz4+Oz4+Oz4=" /> |
|
_ _VIEWSTATE 非表示フィールドの値に追加されている文字は、現在のページの表示状態を示しています。ページの表示状態には、BackColor や ForeColor などのサーバーコントロールの一時プロパティが含まれます。 |
|
runat="server" 属性を含む <form> 要素がページに設定されていない場合は、EnableViewState プロパティの値にかかわらず、表示状態は保持されません。 |
|
ErrorPage | |
String = Page.ErrorPage | |
ページ未処理の例外が発生した場合のリダイレクト先となるページの名前を返すか、または設定します。 |
|
パラメータ | |
|
|
例 | |
次の例では、ErrorPage プロパティを変更し、ページ未処理の例外が発生したときに実行されたページを表示します。 |
|
Sub Page_Load( ) Page.ErrorPage = "ErrorPage_Handler.aspx" Dim x, y, overflow As Integer x = 1 y = 0 overflow = x/y 'This code will not be executed Message.Text = "Error Page is " & Page.ErrorPage & "." End Sub |
|
"ErrorPage_Handler.aspx" の Page_Load は、次のとおりです。 |
|
Sub Page_Load( ) Message.Text = "We're sorry. An error occurred during the" & _ " processing of your request. Please try again later." End Sub |
|
メモ | |
ErrorPage プロパティは、@ Page ディレクティブの ErrorPage 属性を使用して指定することもできます。 |
|
IsPostBack | |
Boolean = Page.IsPostBack | |
ページが初めて読み込まれたのか (False)、またはクライアントによるポストバックの結果読み込まれたのか (True) を示すブール値を返します。このプロパティは、If ステートメントの構成に応じて、ページが初めて実行されたときまたはページがページ自体にポストバックされるたびに実行する必要のあるロジックに役立ちます。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、IsPostBack プロパティを使用して、ページが初めて読み込まれた場合またはクライアントによるポストバックの結果読み込まれた場合にそれぞれ異なるメッセージをラベルコントロールに表示します。ページが初めて読み込まれた場合、IsPostBack プロパティは False を返し、文字列 "Non-PostBack" が表示されます。ボタンをクリックするとページはページ自体にポストバックされ、IsPostBack は True を返し、文字列 "PostBack" が表示されます。 |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) If Page.IsPostBack Then Message.Text = "PostBack" Else Message.Text = "Non-PostBack" End If End Sub </script> </head> <body> <form runat="server"> <asp:button id="post" Text="Post page" runat="server"/> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
メモ | |
IsPostBack プロパティは、runat="server" 属性を含む <form> 要素が設定され、またポストバックを発生させる少なくとも 1 つのコントロールが実装されているページに対してのみ True を返します。コントロールには、前述の例で示した Button コントロール、または AutoPostBack プロパティが True に設定されている DropDownList コントロールなどその他のコントロールが含まれます。 |
|
IsValid | |
Boolean = Page.IsValid | |
ページ上の検証コントロールのうちユーザー入力を検証できなかったコントロールがないかどうかを示すブール値を返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、IsValid プロパティを使用して、現在のページ上の検証が成功したかどうかを判断し、メッセージを表示します。 |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) If IsPostBack Then Page.Validate( ) If Page.IsValid Then Message.Text = "Page is valid." Else Message.Text = "Page is not valid." End If End If End Sub </script> </head> <body> <form runat="server"> Enter your name: <asp:textbox id="name" runat="server"/> <asp:requiredfieldvalidator id="rfvName" controltovalidate="name" enableclientscript="false" errormessage="Required!" runat="server"/> <br/> <asp:button id="submit" Text="Submit" runat="server"/> <br/> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
メモ | |
IsValid プロパティにより、フォームの検証コントロールによって実行された検証がすべて成功したかどうかが判断されます。ページに検証コントロールがない場合は、このプロパティの値は常に True になります。IsValid の値を確認する前に、前述の例のように Page.Validate メソッドを呼び出すか、または CausesValidation プロパティが True に設定されているコントロール (Button、ImageButton、LinkButton など) が設定されたページを送信済みである必要があります。そうでない場合は、例外が発生します。 |
|
前述の例では、RequiredFieldValidator コントロールの EnableClientScript プロパティが False に設定されています。このため、クライアントサイドでの検証が無効になります。デフォルトでは、クライアントサイドの検証は有効になり、検証が失敗した場合、ページがサーバーに送信されることはありません。上位レベルのブラウザでは、クライアントサイドのスクリプトを使用してクライアント上で検証が実行され、検証が成功した場合のみページが送信されます。ページが送信された場合にのみ、サーバー側でイベントハンドラーコードが実行され、IsValid プロパティの値に応じたメッセージが表示されます。 _ |
|
IsValid プロパティの確認は、クライアントサイドでの検証が有効かどうかにかかわらず、悪意のあるクライアントがクライアントサイドでの検証を回避する可能性があるため重要となります。 |
|
Request | |
HttpRequest = Page.Request | |
着信 HTTP 要求のデータへのアクセスを可能にする HttpRequest クラスのインスタンスを返します。これは、ASP の組み込みオブジェクト Request に相当します。HttpRequest クラスの詳細については、第 16 章を参照してください。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、HttpRequest オブジェクトの ServerVariables コレクションを使用して、要求を送信したクライアントの IP アドレスを表示します。 |
|
Sub Page_Load( ) Message.Text = "The current request is from: " & _ CStr(Request.ServerVariables.Item("REMOTE_ADDRESS")) End Sub |
|
メモ | |
Application プロパティや Cache プロパティと同様、要求に関連付けられている HttpRequest インスタンスへのローカル参照を取得できますが、通常は、このインスタンスには、前述の例のように Request プロパティを使用して直接アクセスします。 |
|
Response | |
HttpResponse = Page.Response | |
応答についての情報を格納し、HTTP 応答データのブラウザへの送信を可能にする HttpResponse クラスのインスタンスを返します。これは、ASP の組み込みオブジェクト Response に相当します。HttpResponse クラスの詳細については、第 17 章を参照してください。 |
|
パラメータ | |
|
|
例 | |
次の例では、Page オブジェクトの Response プロパティを使用して、HttpResponse クラスの ContentType プロパティに text/xml を設定します。このプロパテイを設定すると、Internet Explorer 5.0 以降のブラウザの場合、XML マークアップとして表示されたページが出力されます。 |
|
Sub Page_Load( ) Response.ContentType = "text/xml" Message.Text = "This page will be displayed as XML in " & _ "Internet Explorer 5.0 or above." End Sub |
|
メモ | |
Application プロパティや Cache プロパティと同様、要求に関連付けられている HttpResponse インスタンスへのローカル参照を取得できますが、通常、このインスタンスには、前述の例のように Request プロパティを使用して直接アクセスします。 |
|
Server | |
HttpServerUtility = Page.Server | |
ASP.NET 要求を処理する上で有用なメソッドを公開する HttpServerUtility クラスのインスタンスを返します。HttpServerUtility クラスの詳細については、第 18 章を参照してください。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、Server プロパティを使用して HttpServerUtility クラスの HtmlEncode メソッドにアクセスします。これにより、HTML タグおよび文字をブラウザで解釈して表示するのではなく、HtmlEncode メソッドによりこれらをエンコードしてユーザーに表示することができます。 _ |
|
Sub Page_Load( ) Message.Text = Server.HtmlEncode("<em>Hello, World!</em>") End Sub |
|
このページから生成される HTML は、次のようになります。 |
|
<html> <head> <title>Server property example</title> </head> <body> <span id="Message"><em>Hello, World!</em></span> </body> </html> |
|
メモ | |
Request プロパティや Response プロパティと同様、アプリケーションに関連付けられている HttpServerUtility インスタンスへのローカル参照を取得できますが、通常、このインスタンスには、前述の例のように Server プロパティを使用して直接アクセスします。 |
|
Session | |
HttpSessionState = Page.Session | |
現在のユーザーセッションに関する情報を含むオブジェクトを返します。Session オブジェクトは、ASP.NET アプリケーションからページを要求するそれぞれのユーザーごとに保持されます。セッション固有のデータを Session オブジェクトに格納すると、ASP.NET アプリケーションの複数のページからこのデータにアクセスできます。HttpSessionState クラスの詳細については、第 19 章を参照してください。 |
|
パラメータ | |
|
|
例 | |
次の例では、Session オブジェクトを使用して、セッション状態に関する情報の格納場所を示す Mode プロパティの値を表示します。 |
|
Sub Page_Load( ) Message.Text = "Current Session State Mode: " &_ Session.Mode.ToString( ) End Sub |
|
メモ | |
Request プロパティや Response プロパティと同様、要求に関連付けられている HttpSessionState インスタンスへのローカル参照を取得できますが、通常、このインスタンスには、前述の例のように Session プロパティを使用して直接アクセスします。 |
|
Trace | ||||||||||
TraceContext = Page.Trace | ||||||||||
現在の Web 要求に対する TraceContext オブジェクトを返します。トレースを使用すると、Web 要求の実行の詳細が分かります。TraceContext クラスのメンバーは、次のとおりです。 |
||||||||||
|
||||||||||
パラメータ | ||||||||||
|
||||||||||
例 | ||||||||||
次の例では、Page クラスの Trace プロパティを使用して、トレースをプログラム的に有効にします。 |
||||||||||
Sub Page_Load( ) If Trace.IsEnabled = True Then Message.Text = "Tracing is enabled." Else Message.Text = "Tracing is not enabled." End If End Sub |
||||||||||
メモ | ||||||||||
Request プロパティや Response プロパティと同様、要求に関連付けられている TraceContext インスタンスへのローカル参照を取得できますが、通常、このインスタンスには、前述の例のように Trace プロパティを使用して直接アクセスします。アプリケーションのトレースの詳細については、第 10 章を参照してください。 |
||||||||||
User | ||||||
IPrincipal = Page.User | ||||||
ページ要求を送信したユーザーのセキュリティ情報を保持する IPrincipal インターフェイスを実装するオブジェクトのインスタンスを返します。IPrincipal インターフェイスが実装するメンバーは、次のとおりです。 _ |
||||||
|
||||||
パラメータ | ||||||
|
||||||
例 | ||||||
次の例では、User プロパティを使用してユーザーの認証状態および名前を取得し、これをブラウザに表示します。 |
||||||
Sub Page_Load( ) Message.Text = "Authenticated: " & _ User.Identity.IsAuthenticated & "<br/>" Message.Text &= "User Name: " & User.Identity.Name End Sub |
||||||
メモ | ||||||
User プロパティによって返された IPrincipal オブジェクトを実装するには、"machine.config" または "web.config" のいずれかのファイルで何らかの認証が構成され、また、少なくとも、匿名ユーザーを拒否する承認ルールが構成されている必要があります。これらの条件が満たされていない場合、IIdentity オブジェクトの IsAuthenticated プロパティは False を返し、Name プロパティは空の文字列を返します。 |
||||||
ViewState | |
StateBag = Page.ViewState | |
ViewState プロパティは、ページ上のサーバーコントロールの状態情報を保持する StateBag クラスのインスタンスを返します。この StateBag インスタンスは、同一ページへの複数の要求で保持する必要のある任意のデータを格納するために使用することもできます。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、Message コントロールの ForeColor プロパティを設定し、次に、この色の値を ViewState StateBag インスタンスに格納します。この場合、ページがポストバックされると、格納されている色情報をコードが取得し、この色名に応じて、Red から Black またはその逆に色が変更されます。 _ |
|
<%@ Page Language="vb" %> <html> <head> <title>ViewState property example</title> <script runat="server"> Sub Page_Load( ) Dim LocalColor As System.Drawing.Color If IsPostBack Then LocalColor = CType(ViewState("LabelColor"), _ System.Drawing.Color) If LocalColor.Name = "Black" Then LocalColor = System.Drawing.Color.Red Else LocalColor = System.Drawing.Color.Black End If Message.ForeColor = LocalColor Message.Text = "Label color is " & LocalColor.Name ViewState("LabelColor") = LocalColor Else Message.ForeColor = System.Drawing.Color.Black LocalColor = Message.ForeColor Message.Text = "Label color is " & LocalColor.Name ViewState("LabelColor") = LocalColor End If End Sub </script> </head> <body> <form runat="server"> <asp:button id="button" text="Click to change label color" runat="server"/> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
メモ | |
ViewState は、サーバーコントロールの状態を自動的に管理する以外に、要求間にページを保存しておくバックグラウンド状態として使用することもできます。StateBag クラスは、整数や文字列などの基本的なデータタイプを格納する以外に、オブジェクトがシリアル化をサポートする場合は、前述のコード例の Color 構造体のようにオブジェクトを格納することもできます。シリアル化をサポートするオブジェクトを ViewState に格納すると、オブジェクトの状態は自動的に ViewState に格納可能な形式にシリアル化されます。また、このオブジェクトを参照すると、シリアル化が解除されてオブジェクトインスタンスに戻ります。 |
|
ViewState にはオブジェクト型に関する情報が格納されないため、ViewState から取得したオブジェクトは正しい型にキャストする必要があります。前述の例の場合、オブジェクト型は System.Drawing.Color です。 |
|
また、データセットなどのサイズの大きいオブジェクトを ViewState に格納する場合は、事前に十分検討してください。ViewState は非表示フォームフィールドとして保存されるため、要求ごとにブラウザに送信されます。サイズの大きいオブジェクトを ViewState に格納すると、ページの読み込みに時間がかかります。 |
|
Controls | |
ControlCollection = Page.Controls | |
ページに関連付けられている ControlCollection インスタンスへのアクセスを提供します。このインスタンスを使用すると、実行時にコントロールを追加または操作することができます。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、Controls プロパティを使用して、ページに関連付けられている ControlCollection クラスのインスタンスの Count プロパティを表示します。次に、コレクションに新しい Label コントロールを追加し、この Label コントロールを使用して、更新された Count プロパティを表示します。 |
|
Sub Page_Load( ) Message.Text = "There are currently " & Controls.Count & _ " controls on the page.<br/>" Dim Message2 As New Label Controls.AddAt(Controls.Count - 1, Message2) Message2.Text = "There are now " & Controls.Count & _ " controls on the page." End Sub |
|
メモ | |
Session プロパティや Trace プロパティと同様、ページに関連付けられている Controls コレクションへのローカル参照を取得できますが、通常、このインスタンスには、前述の例のように Controls プロパティを使用して直接アクセスします。 |
|
既にコントロールが含まれているページに新たにコントロールを追加する場合は、ControlCollection クラスの AddAt メソッドを使用すると、単純にコレクションの最後にコントロールを配置する Add メソッドを使用するよりも、正確にコントロールを配置できます。前述の例では、Add メソッドを使用した結果、追加した Label コントロールからの出力がページの終了タグ </html> の後に表示されます。これは整形式の HTML ではないため、ブラウザによってはページが正しく表示されない場合があります。 |
|
Validators | |
ValidatorCollection = Page.Validators | |
要求されたページ上のすべての検証コントロールを保持する ValidatorCollection クラスのインスタンスを返します。それぞれの検証コントロールには、ValidatorCollection コレクションを繰り返し使用してアクセスできます。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、RequiredFieldValidator および RegularExpressionValidator コントロールが割り当てられた Textbox コントロールを表示します。Page_Load 部分では、Validators プロパティから返された ValidatorCollection に対してコードが繰り返され、このコレクション内の各検証コントロールの ID および ErrorMessage プロパティが表示されます。 |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) Dim Validator as BaseValidator For Each Validator in Validators Message.Text &= Validator.ID & " error message: " Message.Text &= Validator.ErrorMessage & "<br/>" Next End Sub </script> </head> <body> <form runat="server"> Phone: <asp:textbox id="phone" runat="server"/> <asp:requiredfieldvalidator id="rfvPhone" controltovalidate="phone" display="dynamic" errormessage="Required!" runat="server"/> <asp:regularexpressionvalidator id="revPhone" controltovalidate="phone" display="dynamic" validationexpression="^[2-9]\d{2}-\d{3}-\d{4}$" errormessage="Enter a phone number in the form xxx-xxx-xxxx" runat="server"/> <br/> <asp:button id="submit" text="Submit" runat="server"/> </form> <br/> <asp:label id="Message" runat="server"/> </body> </html> |
|
メモ | |
ここでは、すべての検証コントロールの派生元である BaseValidator コントロールから継承される検証コントロールのプロパティのみを表示しているため、これらのプロパティにアクセスする前に各検証コントロールをそれぞれ特定の型にキャストする必要はありません。ただし、RegularExpressionValidator クラスの ValidationExpression プロパティなど、使用されている検証コントロールの型に固有なプロパティを表示する場合は、コントロールを適切な型にキャストする必要があります。Visual Basic .NET ではこの場合、CType キーワードを使用します。 |
|
DataBind | |
Page.DataBind( ) | |
ページ内のすべてのデータバインディング式を評価および解決します。また、すべての子コントロール上の DataBind を呼び出します。 |
|
パラメータ | |
なし |
|
例 | |
次のコード例では、データバインディング式を使用して、Label コントロールタグの ForeColor 属性を Color という名前のローカル変数の値に設定しています。Page_Load 部分で DataBind メソッドが呼び出されると、Color 変数の値が ForeColor 属性に設定されます。これは、コードで ForeColor プロパティを設定した場合と同じことです。 |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Dim Color As System.Drawing.Color = System.Drawing.Color.Red Sub Page_Load( ) Message.Text = "ForeColor is: " & Color.Name DataBind( ) End Sub </script> </head> <body> <asp:label id="Message" ForeColor="<%# Color %>" runat="server"/> </body> </html> |
|
メモ | |
DataGrid コントロールや DataList コントロールなど、ページ上の特定のコントロールに対してデータバインディングを実行する場合は、そのページではなくコントロールに対して DataBind を呼び出す方が効率的です。これは、特定のコントロールに対して DataBind を呼び出すことで、データバインディングが必要ないコントロールに対して DataBind を呼び出すというオーバーヘッドを排除できるためです。 |
|
FindControl | |
Control = Page.FindControl(String) | |
検索文字列と名前が一致するコントロールオブジェクトへの参照を返します。FindControl メソッドは、ベースとなる Control クラスのメンバーです。 |
|
パラメータ | |
|
|
例 | |
次の例では、コントロールの ID を使用してこのコントロールを検索し、背景色を変更します。 |
|
Sub Page_Load( ) Dim TheControl As Control = FindControl("Message") If Not TheControl Is Nothing Then Dim TheLabel As Label = CType(TheControl, Label) TheLabel.Text = "Found the label named Message!" TheLabel.BackColor = System.Drawing.Color.Blue End If End Sub |
|
メモ | |
FindControl メソッドは、Page クラスの派生元である Control クラスから継承されたメソッドです。ネストされたコントロール、または親ページのコントロールを操作する必要があるユーザーコントロールを操作する場合に便利です。たとえば、ユーザーコントロールのコードにより、このユーザーコントロールを含むページに対して FindControl を呼び出し、同じページ内のコントロールで、このユーザーコントロールの外部に実装されている任意のコントロールを検索および操作することができます。 |
|
HasControls | |
Boolean = Page.HasControls( ) | |
ページに子コントロールが含まれているかどうかを示すブール値を返します。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、HasControls から返される値に基づいて、ページの Controls コレクションにコントロールが含まれているかどうかを示すメッセージを表示します。 |
|
Sub Page_Load( ) If Page.HasControls = True Then Message.Text = "The page contains controls." Else Message.Text = "The page does not contain controls." End If End Sub |
|
LoadControl | |
objControl = Page.LoadControl(strPath) | |
"strPath" ユーザーコントロールファイルで定義されているユーザーコントロールのインスタンスを返します。LoadControl を使用すると、@ Register ディレクティブを使用せずにユーザーコントロールを動的に読み込むことができます。 |
|
パラメータ | |
|
|
例 | |
次の例では、LoadControl を使用して実行時にユーザーコントロールを読み込み、ページの Controls コレクションに追加します。 |
|
Sub Page_Load( ) Dim Hello As UserControl = LoadControl("hello.ascx") Page.Controls.Add(Hello) End Sub |
|
ユーザーコントロール "hello.ascx" は次のようになります。 |
|
<h1>Hello, World!</h1> |
|
MapPath | |
String = Page.MapPath(virtualPath) | |
指定された仮想パスに対応する物理パスを返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、指定されたページの仮想パスを物理パスにマップします。 |
|
Sub Page_Load( ) Message.Text = MapPath("MapPath.aspx") End Sub |
|
メモ | |
Page.MapPath メソッドの機能は、Server.MapPath メソッドの機能と同じです。 |
|
ResolveUrl | |
String = Page.ResolveUrl(strRelativeUrl) | |
相対 URL に対応する絶対 URL を返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、現在の相対 URL を絶対 URL にマップします。 |
|
Sub Page_Load( ) Message.Text = Page.ResolveUrl("ResolveUrl.aspx") End Sub |
|
Validate | |
Page.Validate( ) | |
ページ上の各検証コントロールの検証ロジックを呼び出します。このメソッドは、呼び出されると、Page オブジェクトの ValidatorCollection コレクションを繰り返し使用して、各検証コントロールに関連付けられている検証ロジックを実行します。 |
|
例 | |
IsValid プロパティの例を参照してください。 |
|
メモ | |
CausesValidation プロパティが True に設定されている HTML ボタンコントロールまたは ASP ボタンコントロールがクリックされると、Validate メソッドが自動的に呼び出されます。 |
|
Error | |
Sub Page_Error(Sender As Object, e As EventArgs) 'エラー処理コード | |
Error イベントは、ページで未処理の例外が発生した場合に呼び出されます。このイベントにイベントハンドラーが定義されていない場合は、Application_Error イベントが呼び出されます。例外の処理が終了していない場合は、"web.config" に設定されている <customErrors> 要素に制御が渡されます。 |
|
パラメータ | |
|
|
例 | |
次のコード例では、意図的にオーバーフロー例外を発生させ、この例外を Page_Error ハンドラーで処理し、例外のテキストを表示した後にこれをクリアしています。 |
|
Sub Page_Load( ) Dim x, y, overflow As Integer x = 1 y = 0 overflow = x / y End Sub Sub Page_Error( ) Response.Write(Server.GetLastError.ToString( )) Server.ClearError End Sub |
|
メモ | |
ここでは例外を Server クラスの GetLastError メソッドを使用して取得しています。エラーの処理が完了すると、前述の例のように Server.ClearError を呼び出して例外をクリアするか、例外を次のレベルのエラー処理にバブルアップすることができます。 |
|
Sender パラメータおよび e パラメータは、前述の例にあるように、このイベントでは省略可能です。 |
|
@ Page ディレクティブの AutoEventWireup 属性が True (デフォルト) に設定されている場合は、イベントに正しい Page_Error 署名が設定されている限り、ASP.NET によってこのイベント用のイベントハンドラーが自動的に呼び出されます。 |
|
Init | |
Sub Page_Init(Sender As Object, e As EventArgs) '初期化コード | |
パラメータ | |
|
|
例 | |
次のコード例では、Page_Init でラベルの ForeColor プロパティを設定するための変数を初期化し、次にその値を変更して Page_Load 内にある別のラベルの ForeColor プロパティを設定します。 |
|
<%@ Page Language="vb" %> <html> <head> <title>Init event example</title> <script runat="server"> Dim TheColor As System.Drawing.Color Sub Page_Init( ) TheColor = System.Drawing.Color.Red End Sub Sub Page_Load( ) Message.ForeColor = TheColor Message.Text = "The color of the text was set in Page_Init." TheColor = System.Drawing.Color.Blue Message2.ForeColor = TheColor Message2.Text = "The color of the text was set in Page_Load." End Sub </script> </head> <body> <asp:label id="Message" runat="server"/> <br/> <asp:label id="Message2" runat="server"/> </body> </html> |
|
メモ | |
Sender パラメータおよび e パラメータは、前述の例にあるように、このイベントでは省略可能です。 |
|
@ Page ディレクティブの AutoEventWireup 属性が True (デフォルト) に設定されている場合は、イベントに Page_Init 署名が設定されている限り、ASP.NET によってこのイベント用のイベントハンドラーが自動的に呼び出されます。 |
|
Load | |
Sub Page_Load(Sender As Object, e As EventArgs) 'コード | |
ページの読み込み時に発生します。このイベントはページを要求するごとに発生するため、ページの子コントロールの初期化など、ページレベルで実行する必要がある初期化コードを追加することができます。Load イベントが発生すると、ページの表示状態情報にもアクセスできるようになります。 |
|
Load イベントには、ASP.NET により次のパラメータが渡されます。 |
|
|
|
例 | |
Init の例を参照してください。 |
|
メモ | |
Sender パラメータおよび e パラメータは、前述の例にあるように、このイベントでは省略可能です。 |
|
@ Page ディレクティブの AutoEventWireup 属性が True (デフォルト) に設定されている場合は、イベントに正しい Page_Load イベント署名が設定されている限り、ASP.NET によってこのイベント用のイベントハンドラーが自動的に呼び出されます。 |
|
Unload | |
Sub Page_Unload(Sender As Object, e As EventArgs) 'クリーンアップコード | |
ページがメモリからアンロードされる際に発生します。このイベントはページがアンロードされる前に発生するため、開かれているファイルやデータベース接続を閉じるなどのクリーンアップ操作を実行することができます。 |
|
Unload イベントには、ASP.NET により次のパラメータが渡されます。 |
|
|
|
例 | |
次のコード例では、Unload イベントを使用して Page_Load イベントハンドラーで表示のために開かれたファイルを閉じています。 |
|
Dim TheFile As System.IO.StreamReader Sub Page_Load( ) TheFile = System.IO.File.OpenText(MapPath("Init.aspx")) Message.Text = "<pre>" & _ Server.HtmlEncode(TheFile.ReadToEnd( )) & "</pre>" End Sub Sub Page_Unload( ) TheFile.Close( ) End Sub |
|
メモ | |
Unload イベントは、ページレベルで実行するクリーンアップ作業、データベースなどのリソース、例外により通常のページ処理が中断される可能性がある場合に役立ちますが、Try...Catch...Finally ステートメントの Finally ブロックにリソースのクリーンアップコードを実装することをお勧めします。これにより、クリーンアップコードが確実に実行されます。Try...Catch...Finally ステートメントの詳細については、第 10 章を参照してください。 |
|
Sender パラメータおよび e パラメータは、前述の例にあるように、このイベントでは省略可能です。 |
|
@ Page ディレクティブの AutoEventWireup 属性が True (デフォルト) に設定されている場合は、Page_Unload 署名が設定されている限り、ASP.NET によってこのイベント用のイベントハンドラーが自動的に呼び出されます。 |
|