ASP.NET Web フォーム ページは、拡張子 .aspx を持つ宣言型テキスト ファイルです。静的コンテンツに加えて、8 つの異なる構文を使用して要素をマークできます。このセクションでは、これらの構文要素を確認し、その使用方法の例をいくつか示します。
コードをレンダリングするための構文: <% %> および <%= %>
コード レンダリング ブロックは <% ... %> 要素で表されます。これにより、レンダリングされたコンテンツを制御でき、Web フォーム ページの表示フェーズ中に実行されます。実行。次の例は、これらを使用して HTML のコンテンツをループする方法を示しています。
<%@ ページ言語="VB" %>
<html>
<本文>
<% Dim I As Integer
I=0~7%の場合>
<font size="<%=I%>"> Hello World! </font> <br>
<%次の%>
</本文>
</html>
<% ... %>に含まれるコードは実行のみですが、等号を含む式(<%= ... %>)は内容表示時に結果を計算します。したがって、<%="Hello World" %> は C# コード <% Response.Write("Hello World" %>) と同じ結果を表示します。
この言語ではステートメントを終了または分離するためにマーカー (C# のセミコロン ; など) を使用する必要があるため、これらのマーカーを正しく配置することが重要であることに注意してください。
C# コード
<% Response.Write("Hello World"); では、ステートメントを終了するためにセミコロンが必要です。
<%="Hello World"; %> エラー: 「Response.Write("Hello World";);」が発生します。
<%="Hello World" %> セミコロンは必要ありません。
コードを宣言する構文: <script runat="server">
コード宣言ブロックは、Page クラスにコンパイルされるメンバー変数とメソッドを定義します。これらのブロックは、ページおよびナビゲーション ロジックの構築に使用できます。次の例は、<script runat="server"> ブロックで Subtract メソッドを定義し、ページ内でそれを呼び出す方法を示しています。
<html>
<スクリプト言語="VB" runat=サーバー>
関数 Subtract(Num1 As Integer, Num2 As Integer) As Integer
Num1-Num2 を返す
終了機能
</スクリプト>
<
本文>
<%
整数としての寸法番号 = 100
数値 > 0 の間実行する
Response.Write("値: " & 数値 & "<br>")
数値 = 減算(数値, 1)
ループ
%>
</本文>
</html>
注意: ASP とは異なり、ASP では関数は <% %> ブロックで定義する必要があります。すべての関数とグローバル変数は <script runat=server> タグを使用して定義する必要があります。 <% %> ブロック内の関数宣言により、構文コンパイル エラー メッセージが表示されます。
サーバー コントロールの構文 カスタマイズ
された ASP.NET サーバー コントロールを使用すると、ページ開発者は HTML ユーザー インターフェイスを動的に生成し、クライアントの要求に応答できます。これらは、宣言的なマークアップベースの構文を使用してファイルで表現されます。これらのタグは、「runat=server」属性が含まれているという点で他のタグとは異なります。次の例は、ASP.NET ページで <asp:label runat="server"> サーバー コントロールを使用する方法を示しています。このコントロールは、System.Web.UI.WebControls 名前空間の Label クラスに対応します。
ID が「Message」のタグを追加すると、実行時に Label インスタンスを作成できます。
<asp:label id="Message" font-size=24 runat="server"/>
この名前を使用してコントロールにアクセスできます。 。次のコードは、コントロールの Text プロパティを設定します。
Message.Text = "ASP.NET へようこそ"
<html>
<スクリプト言語="VB" runat=サーバー>
Sub Page_Load(オブジェクトとしての送信者、EventArgsとしてのE)
Message.Text = "ASP.NET へようこそ"
エンドサブ
</スクリプト>
<本文>
<asp:label id="メッセージ" font-size=24 runat=server/>
</本文>
</html>
HTML サーバー コントロールの構文
HTML サーバー コントロールを使用すると、開発者はページ内の HTML 要素をプログラムで操作できます。 HTML サーバー コントロール タグは、「runat=server」属性を持つという点でクライアント HTML 要素とは異なります。次の例は、ASP.NET ページで HTML <span runat=server> サーバー コントロールを使用する方法を示しています。
<html>
<スクリプト言語="VB" runat=サーバー>
Sub Page_Load(オブジェクトとしての送信者、EventArgsとしてのE)
Message.InnerHtml = "ASP.NET へようこそ"
エンドサブ
</スクリプト>
<本文>
<span id="メッセージ" style="font-size:24" runat=server/>
</本文>
</html>
データ バインディング構文: <%# %>
ASP.NET のデータ バインディングの組み込みサポートにより、ページ開発者はコントロール プロパティをデータ コンテナーの値に階層的にバインドできます。 <%# %> コード ブロック内のコードは、親コントロール コンテナーの DataBind メソッドが呼び出された場合にのみ実行されます。次の例は、<asp:datalist runat=server> コントロールでデータ バインディング構文を使用する方法を示しています。
このデータリストでは、各項目にテンプレートが割り当てられています。項目テンプレートのコンテンツはデータ バインディング式を使用して指定され、Container.DataItem は MyList データ リストで使用されるデータ ソースを指します。
<asp:datalist id="MyList" runat=server>
<アイテムテンプレート>
値は次のとおりです: <%# Container.DataItem %>
</アイテムテンプレート>
</asp:datalist>
この場合、MyList コントロールのデータ ソースがプログラムで設定され、DataBind() メソッドが呼び出されます。
コントロールの DataBind メソッドを呼び出すと、再帰ツリーがトリガーされます (コントロールからツリーの下位のコントロールまで)。階層内の各サーバー コントロールの DataBinding イベントが発生し、コントロールの値のデータ バインディング式が発生します。それに応じて計算されます。したがって、ページの DataBind メソッドが呼び出される場合、ページ内のすべてのデータ バインディング式が呼び出されます。
<html>
<スクリプト言語="VB" runat=サーバー>
Sub Page_Load(オブジェクトとしての送信者、EventArgsとしてのE)
新しい ArrayList として項目を暗くする
Items.Add("1")
Items.Add("2")
Items.Add("3")
MyList.DataSource = アイテム
MyList.DataBind()
End Sub
</script>
<本文>
<asp:datalist id="MyList" runat=server>
<アイテムテンプレート>
値は次のとおりです: <%# Container.DataItem %>
</アイテムテンプレート>
</asp:datalist>
</本文>
</html>
ASP.NET 2.0 には、新しい簡略化されたデータ バインディング構文も含まれており、これにより、ページ コードで DataBind() を呼び出さなくても、コントロールがデータ ソース コントロールに自動的にデータ バインドできるようになります。この構文については、「データ アクセスの実行」の章で説明します。
オブジェクト タグの構文: <object runat="server" />
オブジェクト タグを使用すると、ページ開発者は宣言的なタグベースの構文を使用して変数インスタンスを宣言および作成できます。次の例は、オブジェクト表記を使用して ArrayList クラスのインスタンスを作成する方法を示しています。
このオブジェクトは実行時に自動的に作成され、ID「items」を介してアクセスできます。
<html>
<スクリプト言語="VB" runat=サーバー>
Sub Page_Load(オブジェクトとしての ByVal Sender、EventArgs としての ByVal E)
ArrayItems.Add("1")
ArrayItems.Add("2")
ArrayItems.Add("3")
MyList.DataSource = ArrayItems
MyList.DataBind()
エンドサブ
</スクリプト>
<
本文>
<object id="ArrayItems" class="System.Collections.ArrayList" runat=server/>
<asp:datalist id="MyList" runat=server>
<アイテムテンプレート>
値は次のとおりです: <%# Container.DataItem %>
</アイテムテンプレート>
</asp:datalist>
</本文>
</html>
サーバー側のコメント構文: <%-- コメント --%>
サーバー側のコメントを使用すると、ページ開発者はサーバー コード (サーバー コントロールを含む) および静的コンテンツの実行とレンダリングを防ぐことができます。次の例は、コンテンツが実行され、クライアントに送信されないようにする方法を示しています。 <%-- と --%> の間の情報はすべてフィルターで除外され、他の ASP.NET ディレクティブが含まれている場合でも、元のサーバー ファイルにのみ表示されることに注意してください。
<html>
<本文>
以下のコンテンツは、サーバー側のコメントを使用してブラウザ クライアントから隠されています。
(意味を理解するには、.aspx ソースを参照してください :-)
<%--
<asp:calendar id="MyCal" runat=server/>
<Iの場合の%=0~44%>
ハローワールド<br>
<%次の%>
--%>
</本文>
</html>
サーバー側ファイル インクルード構文: <-- #Include File="Locaton.inc" -->
サーバー側ファイル インクルード (#Include) を使用すると、開発者は ASP 上の任意の場所に特定のファイルのコンテンツを挿入できます。 NETページ。次の例は、カスタム タイトルとフッターをページに挿入する方法を示しています。
<html>
<本文>
<!-- #Include File="Header.inc" -->
<br />
<h3> メインページのコンテンツ </h3>
<br />
<!-- #Include File="Footer.inc" -->
</本文>
</html>
式構文: <%$ ... %>2.0 の新機能
ASP.NET 2.0 では、ページ分析前の値置換のための新しい宣言式構文が追加されています。これは、サーバー コントロールのプロパティ値を接続文字列値または Web.config ファイル内のアプリケーション設定に置き換える必要がある場合に非常に便利です。ローカライズ中にリソース ファイルの値を置き換えるのにも使用できます。
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString='<%$ connectionStrings:Pubs %>' runat="server" SelectCommand="sp_GetAuthors" />
<asp:Label ID="Label1" Text='<%$ リソース: ExchRate, ConvertLabel %>' runat="server"/>