ASP.NET Web ページの構文の概要
更新 : 2007 年 11 月
ASP.NET Web ページはサーバー ベースの処理を含まない静的な HTML Web ページと同様の方法で作成できますが、ページが実行される際に ASP.NET が認識する要素とプロセスが追加されています。ASP.NET Web ページと静的 HTML などのその他のページを区別する特性は次のとおりです。
ファイル名拡張子は、.htm、.html などではなく .aspx です。.aspx ファイル名拡張子によって、ページは ASP.NET によって処理されます。
メモ : ファイル名拡張子の ASP.NET へのマッピングは、インターネット インフォメーション サービス (IIS: Internet Information Services) で行われます。既定では、.aspx ページは ASP.NET によって実行され、.htm と .html ページは ASP.NET では実行されません。
作成するページの型に応じた @ Page ディレクティブなどの省略可能なディレクティブ。
ASP.NET 用に正しく構成された form 要素。form 要素は、ページの処理中に値を使用するコントロールがページに含まれている場合のみ必要です。
Web サーバー コントロール。
サーバー コード (独自のコードをページに追加する場合)。
メモ : ページを XHTML 標準に準拠させるには、DOCTYPE 要素などを追加する必要があります。詳細については、「ASP.NET と XHTML」を参照してください。
ここでは、各要素について詳しく説明します。
すべての HTML ページは .aspx ファイル名拡張子を付けた名前に変更することによって、ASP.NET Web ページとして実行できます。ただし、ページにサーバーの処理が含まれない場合は、ページの処理にオーバーヘッドが追加されるので、.aspx ファイル名拡張子を付ける必要はありません。
ASP.NET Web ページの例
ASP.NET Web ページの基本構成要素を含むページのコード例を次に示します。このページには、ASP.NET 固有の要素と共に HTML ページと同様の静的テキストが含まれます。ASP.NET 固有の要素は強調表示されています。
メモ : |
---|
簡略化のため、このページの例の構成は XHTML 準拠ではありません。詳細については、「ASP.NET と XHTML」を参照してください。 |
セキュリティに関するメモ : |
---|
このページ例には、ユーザー入力を受け付けるテキスト ボックスがあるため、セキュリティ上の脅威になる可能性があります。既定では、ASP.NET Web ページは、ユーザー入力にスクリプトまたは HTML 要素が含まれていないことを検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。 |
<%@ Page Language="VB" %>
<html>
<script runat="server"> Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Label1.Text = "Welcome, " & TextBox1.Text End Sub</script>
<head runat="server">
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" runat="server">
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" runat="server"></asp:Label>
</p>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script runat="server">Void Button1_Click(object sender, System.EventArgs e) { Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head runat="server">
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" runat="server">
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" runat="server"></asp:Label>
</p>
</form>
</body>
</html>
@ ディレクティブ
ASP.NET ページには、一般にページの構成情報やプロパティを指定するためのディレクティブが含まれます。ディレクティブはページを処理する方法を指定する命令として ASP.NET が使用しますが、ブラウザに送信されるマークアップ言語の一部としてレンダリングされるわけではありません。
一般的に使用されるディレクティブは @ Page ディレクティブで、これによって、次のような多くのページ構成オプションを指定できます。
ページで使用するコードのサーバー プログラミング言語。
このページがサーバー コードをページ自体に含むシングルファイル ページであるか、またはコードを個別のクラス ファイルに格納する分離コード ページであるかを指定します。前の例はコードが直接ページに含まれるシングルファイル ページなので、@ Page ディレクティブにリンクされたクラス ファイルに関する情報はありません。詳細については、このトピックで後述する「サーバー コード」および「ASP.NET Web ページのコード モデル」を参照してください。
デバッグとトレースのためのオプション。
このページにマスタ ページが関連付けられているかどうか、つまりコンテンツ ページとして扱う必要があるかどうかを指定します。
@ Page ディレクティブがページに含まれない場合、またはディレクティブに特定の設定がない場合、その設定は Web アプリケーションの構成ファイル (Web.config ファイル) またはサイト構成ファイル (Machine.config ファイル) から継承されます。
@ Page ディレクティブに加えて、ページ固有のオプションを追加するためのその他のディレクティブを含めることもできます。その他の一般的なディレクティブは次のとおりです。
@ Import コードが参照する名前空間を指定できます。
@ OutputCache ページをキャッシュするタイミングと期間を指定するパラメータと共にページをキャッシュするかどうかを指定できます。
@ Implements ページに .NET インターフェイスを実装するかどうかを指定できます。
@ Register ページで使用する追加コントロールを登録できます。@ Register ディレクティブが、コントロールのタグ プリフィックスおよびコントロールのアセンブリの配置を宣言します。ユーザー コントロールまたはカスタムの ASP.NET コントロールをページに追加する場合は、このディレクティブを使用する必要があります。
特定の種類の ASP.NET ファイルは @ Page 以外のディレクティブを使用します。たとえば、ASP.NET マスタ ページは @ Master ディレクティブを使用し、ASP.NET ユーザー コントロールは @ Control ディレクティブを使用します。各ディレクティブによって、ファイルに適したオプションを指定できます。
詳細については、「ASP.NET マスター ページの概要」および「ASP.NET ユーザー コントロール」を参照してください。
form 要素
ユーザーがページと対話して送信できるようにするコントロールを含むページには form 要素を使用する必要があります。これには標準 HTML form 要素を使用しますが、一定の規則が適用されます。form 要素を使用するための規則は次のとおりです。
各ページで使用できる form 要素は 1 つだけです。
form 要素には、値を server に設定した runat 属性を指定する必要があります。この属性によって、サーバー コードでプログラム的にページのフォームとコントロールを参照できます。
ポストバックを実行できるサーバー コントロールは、form 要素の中に含める必要があります。
開始タグに action 属性を含めることはできません。ASP.NET は、ページが処理される際にこれらの属性を動的にオーバーライドして設定します。
Web サーバー コントロール
ほとんどの ASP.NET ページには、ユーザーがページと対話するためのボタン、テキスト ボックス、リストなどのコントロールを追加します。このような Web サーバー コントロールは、HTML のボタンや input 要素に似ています。ただし、これらはサーバーで処理されるので、そのプロパティをサーバー コードを使用して設定できます。これらのコントロールは、サーバー コードで処理できるイベントも発生させます。
サーバー コントロールは、ページが実行されたときに ASP.NET が認識する特別の構文を使用します。一般的な Web サーバー コントロールのコード例を次に示します。
セキュリティに関するメモ : |
---|
TextBox はユーザー入力を受け入れるため、セキュリティ上の脅威になる可能性があります。既定では、ASP.NET Web ページは、ユーザー入力にスクリプトまたは HTML 要素が含まれていないことを検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。 |
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server"
Text="Click" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server"
Text="Click" OnClick="Button1_Click" />
ASP.NET サーバー コントロールのタグ名はプリフィックスで始まります (この場合は asp:)。このプリフィックスは、コントロールが .NET Framework に属していない場合は異なることがあります。ASP.NET サーバー コントロールには runat="server" 属性も含まれ、サーバー コードでコントロールを参照するために使用する ID が含まれることもあります。
ページは実行時にサーバー コントロールを識別し、コントロールに関連付けられたコードを実行します。多くのコントロールは、ページに何らかの HTML またはその他のマークアップ言語をレンダリングします。たとえば、asp:textbox コントロールは type="text" 属性を含む input 要素をページにレンダリングします。ただし、Web サーバー コントロールと HTML 要素の間には、必ずしも 1 対 1 のマッピングは存在しません。たとえば、asp:calendar コントロールは HTML テーブルをレンダリングします。ブラウザに何もレンダリングせずに、サーバーのみで処理され、他のコントロールに情報を提供するコントロールもあります。
サーバー コントロールとしての HTML 要素
ASP.NET サーバー コントロールを使用する代わりに、またはそれに加えて、通常の HTML 要素もサーバー コントロールとして使用できます。runat="server" 属性と ID 属性は、ページの任意の HTML 要素に追加できます。ページが実行されると、ASP.NET はこの要素をサーバー コントロールとして識別し、サーバー コードで使用できるようにします。たとえば、次のコード例のように、HTML body 要素に必要な要素を追加できます。
<body runat="server" id="body">
次に、サーバー コードの body 要素を参照し、ユーザーの入力またはデータベースの情報に基づいて実行時に本文の背景色を設定することもできます。
詳細については、「ASP.NET Web サーバー コントロールの概要」を参照してください。
サーバー コード
ほとんどの ASP.NET ページには、ページが処理されるときにサーバーで実行されるコードが含まれます。ASP.NET は、C#、Visual Basic、J#、Jscript などを含む多くの言語をサポートします。
ASP.NET は、Web ページのサーバー コードを記述するための 2 つのモデルをサポートします。シングルファイル モデルでは、ページのコードは script 要素に記述し、開始タグに runat="server" 属性を指定します。このトピックの前述の例は、シングルファイル モデルです。
または、個別のクラス ファイルにページのコードを記述することもできます。これを分離コード モデルと呼びます。この場合は、一般に ASP.NET Web ページにサーバー コードはまったく含まれません。代わりに、@ Page ディレクティブに .aspx ページに関連付けられた分離コード ファイルのリンク情報を指定します。分離コード ファイルを指定する @ Page ディレクティブの一般的なコード例を次に示します。
<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>
CodeFile 属性は個別のクラス ファイルの名前を指定し、Inherits 属性はページに対応する分離コード ファイル内のクラス名を指定します。
詳細については、「ASP.NET Web ページのコード モデル」を参照してください。
メモ : |
---|
ASP.NET Web ページには、クライアント側のイベントに応答してブラウザで実行されるクライアント スクリプトを含めることもできます。ASP.NET ページには、クライアント スクリプトとサーバー コードの両方を含めることができます。詳細については、「ASP.NET Web ページのクライアント スクリプト」を参照してください。 |