この記事では、次の ASP.NET インライン式の概要について説明します。
- <% ... %>
- <%= ... %>
- <%@ ... %>
- <%# ... %>
- <%$ ... %>
- <%-- ... --%>
元の製品バージョン: .NET Framework
元の KB 番号: 976112
<% ... %> 埋め込みコード ブロック
埋め込みコード ブロックは、従来の ASP との下位互換性を維持するために使用されます。 ブロック内のコードは、ページ レンダリング フェーズ中に、現在のページ クラスでプログラミング ステートメントを実行し、関数を呼び出すことができます。
次の例は、ループの結果を表示する埋め込みコード ブロックにサンプルの Microsoft Visual Basic .NET コードがある ASP.NET ページを示しています。
<%@ Page Language="VB" %>
<html>
<body>
<form id="form1" runat="server">
<% For i As Integer = 16 To 24 Step 2%>
<div style="font-size: <% Response.Write(i)%>">
Hello World<br />
</div>
<% Next%>
</form>
</body>
</html>
埋め込みコード ブロックは常にハイパーテキスト マークアップ言語 (HTML) ソースと混在しているため、開発者が読んで維持するのは困難です。
ASP.NET Web ページの埋め込みコード ブロックの詳細については、「ASP.NET Web フォーム ページ Embedded Code Blocksを参照してください。
<%= ... %> 式を表示しています
式を表示する <%= ... %> は、 Response.Write(...) ステートメントのみを含む埋め込みコード ブロックと同等です。 単一の文字列、int 変数、定数などの情報を表示する最も簡単な方法です。
たとえば、次のサンプル コードは現在の時刻を表示します。
<%@ Page Language="VB" %>
<html>
<body>
<form id="form1" runat="server">
<%=DateTime.Now.ToString() %>
</form>
</body>
</html>
表示式は、サーバー コントロールの属性では使用できないことに注意してください。 これは、属性の値としてコンテンツを表示するのではなく、.NET Framework によって式全体が直接コンパイルされるためです。
ASP.NET からの情報を表示する方法の詳細については、「ASP.NETから表示するを参照してください。
<%@ ... %> ディレクティブ式
ディレクティブ式は、Web フォーム (.aspx) ページおよびユーザー コントロール (.ascx) ファイル ASP.NET 処理するときに、ページおよびユーザー コントロール コンパイラによって使用される設定を指定する構文です。
ASP.NET ページ フレームワークでは、次のディレクティブがサポートされています。
| ディレクティブ | 説明 |
|---|---|
@ Page |
ASP.NET ページ パーサーとコンパイラによって使用されるページ固有の属性を定義します。 .aspx ファイルにのみ含めることができます。 このディレクティブ名は、ASP.NET Web フォーム ページでのみ使用できます。 |
@ Control |
ASP.NET ページ パーサーとコンパイラによって使用されるコントロール固有の属性を定義します。 .ascx ファイル (ユーザー コントロール) にのみ含めることができます。 ディレクティブ名は、ユーザー コントロール ファイルでのみ使用できます。 |
@ Import |
名前空間をページまたはユーザー コントロールに明示的にインポートします。 |
@ Implements |
ページまたはユーザー コントロールが指定した .NET Framework インターフェイスを実装することを宣言によって示します。 |
@ Register |
エイリアスを名前空間とクラス名に関連付けます。 これにより、要求されたページまたはユーザー コントロールにユーザー コントロールが含まれるときに、ユーザー コントロールとカスタム サーバー コントロールをレンダリングできます。 |
@ Assembly |
コンパイル時にアセンブリを現在のページにリンクします。 これにより、すべてのアセンブリのクラスとインターフェイスをページで使用できるようになります。 |
@ Master |
ASP.NET マスター ページを識別します。 |
@ WebHandler |
ASP.NET IHttpHandler ページを識別します。 |
@ PreviousPageType |
PreviousPage プロパティを介してアクセスされた前のページに対して厳密な型指定を取得する方法を提供します。 |
@ MasterType |
ASP.NET ページの Master プロパティにクラス名を割り当てます。 ASP.NET マスター ページへの厳密に型指定された参照を作成する方法を提供します。 |
@ OutputCache |
ページまたはユーザー コントロールの出力キャッシュ ポリシーを宣言によって制御します。 |
@ Reference |
ページまたはユーザー コントロールを現在のページまたはユーザー コントロールに宣言によってリンクします。 |
ディレクティブ構文の詳細については、「 Text Template ディレクティブ構文」を参照してください。
<%# ... %> データ バインディング式
データ バインディング式は、このサーバー コントロールのコントロールの DataBind メソッドがページで呼び出されたときに、サーバー コントロールプロパティとデータ ソースの間のバインディングを作成します。
次の例は、データ バインディング式を使用して、関数からラベルの Text プロパティに文字列をバインドする方法を示しています。
<%@ Page Language="VB" %>
<script runat="server">
Protected Function SayHello() As String
Return "Hello World"
End Function
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
lblHello.DataBind()
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<asp:Label ID="lblHello" runat="server" Text="<%# SayHello%>"></asp:Label>
</form>
</body>
</html>
データ バインディング式の構文の詳細については、「 Data バインディング式の構文を参照してください。
<%$ ... %> 式ビルダー
式ビルダーは、アプリケーションの構成またはリソース ファイルに含まれる情報に基づいてコントロール プロパティの値を設定するために使用されます。 次の例は、式ビルダーの基本的な構文です。
<%$ Expression Prefix: Expression Value %>
ドル記号 ($) は、次の式が式ビルダーであることを ASP.NET することを示します。 式プレフィックスは、 AppSettings、 ConnectionStrings、 Resourcesなどの式の種類を定義します。 また、独自の式ビルダーを作成して定義することもできます。 コロン (:) に続く式の値は、特定のプロパティの値として実際に使用 ASP.NET です。
次のデモでは、式ビルダーを使用して、AppSettings ファイルの ノードから Web サイトの著作権を取得する方法と、リテラルの Text プロパティの値として著作権情報を設定する方法を示します。
AppSettings ファイル内の ノード:
<appSettings>
<add key="copyright" value="(c) Copyright 2009 WebSiteName.com"/>
</appSettings>
ASP.NET Web フォーム ページの式ビルダー:
<div id="footer">
<asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>
ASP.NET 式の詳細については、「 ASP.NET 式の概要」を参照してください。
<%-- ... -- %> サーバー側コメント ブロック
サーバー側のコメント ブロックを使用すると、開発者は Web フォーム ページの HTML ソースの任意の場所にコード コメント ASP.NET 埋め込むことができます ( <script> コード ブロック内を除く)。 サーバー側のコメント ブロックの開始タグと終了タグの間のコンテンツは、サーバー上で処理されたり、結果のページにレンダリングされたりすることはありません。
次のコード例は、ASP.NET ページでサーバー側コメント ブロックを使用する方法を示しています。
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim strName As String
strName = Session("userName")
lblUserName.Text = strName
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<%-- Label for UserName --%>
<asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
</form>
</body>
</html>
サーバー側のコメントの詳細については、「 サーバー側のコメントを参照してください。