分離コード ページ モデルでは、1 つの .aspx ファイルにマークアップを格納し、別のファイルにプログラム コードを格納できます。コード ファイルの名前は、使用するプログラミング言語によって異なります。
メモ : |
|---|
すべての .NET プログラミング言語で、ASP.NET Web ページの分離コード ファイルを作成できるわけではありません。そのような言語は部分クラスをサポートする必要があります。たとえば、J# は部分クラスをサポートしないため、ASP.NET ページの分離コード ファイルの作成はサポートしていません。 |
たとえば、SamplePage というページを作成する場合、マークアップは SamplePage.aspx ファイルに格納し、コードは SamplePage.aspx.vb (Visual Basic)、SamplePage.aspx.cs (C#) などのファイルに格納します。
メモ : |
|---|
.NET Framework Version 2.0 で使用される分離コード モデルは、以前のバージョンで使用されたモデルとは異なります。 |
分離コード モデルでは、前のセクションで使用した単一ファイル ページの例は 2 つの部分に分割されます。マークアップが 1 つのファイルに格納され (この例では SamplePage.aspx)、次のコード例に示すように、単一ファイル ページと同様になります。
<%@ Page Language="VB" CodeFile="SamplePage.aspx.vb"
Inherits="SamplePage" AutoEventWire="false" %>
<html>
<head runat="server" >
<title>Code-Behind Page Model</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label" >
</asp:Label>
<br />
<asp:Button id="Button1"
runat="server"
onclick="Button1_Click"
Text="Button" >
</asp:Button>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" CodeFile="SamplePage.aspx.cs"
Inherits="SamplePage" AutoEventWireup="true" %>
<html>
<head runat="server" >
<title>Code-Behind Page Model</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label" >
</asp:Label>
<br />
<asp:Button id="Button1"
runat="server"
onclick="Button1_Click"
Text="Button" >
</asp:Button>
</div>
</form>
</body>
</html>
シングルファイル モデルと分離コード モデルの .aspx ページには、次の 2 つの違いがあります。分離コード モデルには、runat="server" 属性を含む script ブロックがありません。クライアント側スクリプトを記述する場合は、ページに runat="server" 属性を含まない script ブロックを含めることができます。2 番目の違いは、分離コード モデルの @ Page ディレクティブに外部ファイル (SamplePage.aspx.vb または SamplePage.aspx.cs) とクラスを参照する属性が含まれることです。この属性は、.aspx ページをコードにリンクします。
コードは別のファイルにあります。単一ファイル ページの例と同じ Click イベント ハンドラを含む分離コード ファイルのコード例を次に示します。
Partial Class SamplePage
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = "Clicked at " & DateTime.Now.ToString()
End Sub
End Class
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SamplePage : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Clicked at " + DateTime.Now.ToString();
}
}
分離コード ファイルでは、既定の名前空間にすべてのクラス宣言が含まれます。ただし、クラスは partial キーワードを使用して宣言されます。これは、クラス全体が単一のファイルに含まれないことを示します。代わりに、ページが実行されると、コンパイラは .aspx ページと @ Page ディレクティブで参照されるファイルを読み込み、それらを単一のクラスにアセンブルしてから単一のクラスとしてコンパイルします。
部分クラスのファイルは、ページの Page クラスから継承します。詳細については、「ASP.NET ページ クラスの概要」を参照してください。