コンテンツ ページからマスター ページと対話する (VB)

作成者: Scott Mitchell

コンテンツ ページのコードからマスター ページのメソッドの呼び出し、プロパティの設定などを行う方法を確認します。

はじめに

過去 5 つのチュートリアルでは、マスター ページの作成、コンテンツ領域の定義、マスター ページへの ASP.NET ページのバインド、ページ固有のコンテンツの定義を行う方法について説明しました。 訪問者が特定のコンテンツ ページを要求すると、実行時にコンテンツとマスター ページのマークアップが融合され、統合されたコントロール階層がレンダリングされます。 そのため、マスター ページとそのコンテンツ ページの 1 つが対話できる 1 つの方法を既に見てきました。コンテンツ ページでは、マスター ページの ContentPlaceHolder コントロールに変換するマークアップがスペル アウトされます。

まだ調べていないのは、マスター ページとコンテンツ ページがプログラムで対話する方法です。 コンテンツ ページでは、マスター ページの ContentPlaceHolder コントロールのマークアップを定義するだけでなく、そのマスター ページのパブリック プロパティに値を割り当てて、そのパブリック メソッドを呼び出すこともできます。 同様に、マスター ページは、そのコンテンツ ページとやり取りする場合があります。 マスター ページとコンテンツ ページ間のプログラムによる操作は、宣言型マークアップ間の相互作用よりも一般的ではありませんが、このようなプログラムによる操作が必要になるシナリオは多数あります。

このチュートリアルでは、コンテンツ ページがプログラムによってマスター ページと対話する方法について説明します。次のチュートリアルでは、マスター ページがコンテンツ ページと同様に対話する方法について説明します。

コンテンツ ページとそのマスター ページ間のプログラムによる相互作用の例

ページの特定の領域をページ単位で構成する必要がある場合は、ContentPlaceHolder コントロールを使用します。 しかし、ページの大部分が特定の出力を出力する必要があるが、少数のページで他のものを表示するようにカスタマイズする必要がある状況はどうでしょうか。 このような例の 1 つは、 複数の ContentPlaceHolders と既定のコンテンツ のチュートリアルで確認したものですが、各ページにログイン インターフェイスを表示する必要があります。 ほとんどのページにはログイン インターフェイスを含める必要があります。たとえば、メイン ログイン ページ (Login.aspx)、アカウントの作成ページ、認証されたユーザーのみがアクセスできるその他のページなど、いくつかのページでは非表示にする必要があります。 Multiple ContentPlaceHolders と Default Content のチュートリアルでは、マスター ページで ContentPlaceHolder の既定のコンテンツを定義する方法と、既定のコンテンツが不要なページでオーバーライドする方法について説明しました。

もう 1 つのオプションは、ログイン インターフェイスを表示または非表示にするかどうかを示すパブリック プロパティまたはメソッドをマスター ページ内に作成することです。 たとえば、マスター ページには、 という名前 ShowLoginUI のパブリック プロパティが含まれ、その値はマスター ページの Login コントロールのプロパティを設定 Visible するために使用されます。 ログイン ユーザー インターフェイスを抑制する必要があるコンテンツ ページでは、プログラムによって プロパティを ShowLoginUIFalse設定できます。

コンテンツとマスター ページの相互作用の最も一般的な例は、コンテンツ ページで何らかのアクションが発生した後にマスター ページに表示されるデータを更新する必要がある場合に発生します。 特定のデータベース テーブルから最後に追加された 5 つのレコードを表示し、そのコンテンツ ページの 1 つに同じテーブルに新しいレコードを追加するためのインターフェイスが含まれている GridView を含むマスター ページを考えてみましょう。

ユーザーがページにアクセスして新しいレコードを追加すると、最後に追加された 5 つのレコードがマスター ページに表示されます。 新しいレコードの列の値を入力した後、フォームを送信します。 マスター ページの GridView のプロパティが EnableViewState True (既定値) に設定されていると仮定すると、そのコンテンツはビューステートから再読み込みされ、その結果、新しいレコードがデータベースに追加されたばかりの場合でも、5 つの同じレコードが表示されます。 これにより、ユーザーが混乱する可能性があります。

注意

すべてのポストバックで基になるデータ ソースに再バインドするように GridView のビュー ステートを無効にしても、新しいレコードがデータベースに追加されたときよりもページ ライフサイクルの早い段階でデータが GridView にバインドされているため、追加されたレコードは表示されません。

これを解決して、追加したばかりのレコードがポストバック時にマスター ページの GridView に表示されるようにするには、新しいレコードがデータベースに追加された に、GridView にデータ ソースへの再バインドを指示する必要があります。 新しいレコード (およびそのイベント ハンドラー) を追加するためのインターフェイスがコンテンツ ページにあるが、更新する必要がある GridView がマスター ページにあるため、コンテンツページとマスター ページ間の相互作用が必要です。

コンテンツ ページのイベント ハンドラーからマスター ページの表示を更新することは、コンテンツとマスター ページの相互作用に関する最も一般的なニーズの 1 つであるため、このトピックを詳しく調べてみましょう。 このチュートリアルのダウンロードには、Web サイトの フォルダーに という名前NORTHWIND.MDFの Microsoft SQL Server 2005 Express Edition データベースがApp_Data含まれています。 Northwind データベースには、架空の会社 Northwind Traders の製品、従業員、および販売情報が格納されます。

手順 1 では、マスター ページの GridView に最近追加された 5 つの製品を表示する手順を説明します。 手順 2 では、新しい製品を追加するためのコンテンツ ページを作成します。 手順 3 では、マスター ページでパブリック プロパティとメソッドを作成する方法を説明し、手順 4 では、コンテンツ ページからこれらのプロパティとメソッドをプログラムでインターフェイスする方法を示します。

注意

このチュートリアルでは、ASP.NET 内のデータの操作の詳細については説明しません。 マスター ページを設定してデータを表示し、データを挿入するためのコンテンツ ページを設定する手順は完了ですが、簡潔です。 データの表示と挿入、および SqlDataSource コントロールと GridView コントロールの使用の詳細については、このチュートリアルの最後にある「その他の読み取り」セクションのリソースを参照してください。

手順 1: マスター ページに最近追加された 5 つの製品を表示する

Site.master マスター ページを開き、Label コントロールと GridView コントロールを に追加します leftContent<div>。 Label Text の プロパティをクリアし、そのプロパティを EnableViewStateFalse設定し、その ID プロパティを に GridMessage設定します。GridView の ID プロパティを に RecentProducts設定します。 次に、Designerから GridView のスマート タグを展開し、新しいデータ ソースにバインドすることを選択します。 これにより、データ ソース構成ウィザードが起動します。 フォルダー内App_Dataの Northwind データベースは Microsoft SQL Server データベースであるため、 を選択して SqlDataSource を作成します (図 1 を参照)。SqlDataSource という名前を付けますRecentProductsDataSource

GridView を RecentProductsDataSource という名前の SqlDataSource コントロールにバインドする

図 01: という名前 RecentProductsDataSource の SqlDataSource コントロールに GridView をバインドします (フルサイズの画像を表示する 場合はクリックします)

次の手順では、接続先のデータベースを指定するように求められます。 NORTHWIND.MDFドロップダウン リストからデータベース ファイルを選択し、[次へ] をクリックします。 このデータベースを初めて使用するため、ウィザードは に接続文字列Web.configを格納するように指定します。 という名前NorthwindConnectionStringを使用して接続文字列を格納します。

Northwind データベースに接続する

図 02: Northwind データベースに接続する (フルサイズの画像を表示する場合をクリックします)

データ ソースの構成ウィザードには、データの取得に使用するクエリを指定できる 2 つの方法があります。

  • カスタム SQL ステートメントまたはストアド プロシージャを指定するか、
  • テーブルまたはビューを選択し、返す列を指定する

最後に追加された 5 つの製品のみを返す必要があるため、カスタム SQL ステートメントを指定する必要があります。 次のクエリを使用します SELECT

SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC

キーワード (keyword)はTOP 5、クエリから最初の 5 つのレコードのみを返します。 Productsテーブルの主キー ProductIDである はIDENTITY列です。これにより、テーブルに追加された新しい各製品の値が前のエントリよりも大きくなります。 したがって、降順で ProductID 結果を並べ替えた場合、最後に作成された製品から製品が返されます。

最近追加された 5 つの製品を返す

図 03: 最近追加された 5 つの製品を返す (フルサイズの画像を表示する をクリックします)

ウィザードが完了すると、Visual Studio によって GridView に対して 2 つの BoundFields が生成され、データベースから返された フィールドと UnitPrice フィールドが表示されますProductName。 この時点で、マスター ページの宣言型マークアップには、次のようなマークアップを含める必要があります。

<asp:Label ID="GridMessage" runat="server" EnableViewState="false"></asp:Label> 
<asp:GridView ID="RecentProducts" runat="server" AutoGenerateColumns="False" 
 DataSourceID="RecentProductsDataSource">
 <Columns> 
 <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
 SortExpression="ProductName" /> 
 <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" 
 SortExpression="UnitPrice" /> 
 </Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="RecentProductsDataSource" runat="server" 
 ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
 SelectCommand="SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC"> 
</asp:SqlDataSource>

ご覧のように、マークアップには Label Web コントロール (GridMessage)、GridView RecentProducts(2 つの BoundFields を含む)、最後に追加された 5 つの製品を返す SqlDataSource コントロールが含まれています。

この GridView を作成し、その SqlDataSource コントロールを構成したら、ブラウザーから Web サイトにアクセスします。 図 4 に示すように、左下隅にグリッドが表示され、最後に追加された 5 つの製品が一覧表示されます。

GridView には、最近追加された 5 つの製品が表示されます

図 04: GridView には、最近追加された 5 つの製品が表示されます (フルサイズの画像を表示する をクリックします)

注意

GridView の外観を自由にクリーンしてください。 表示される UnitPrice 値を通貨として書式設定したり、背景色やフォントを使用してグリッドの外観を改善したりすることが提案されています。

手順 2: コンテンツ ページを作成して新しい製品を追加する

次のタスクは、ユーザーがテーブルに新しい製品を追加できるコンテンツ ページを Products 作成することです。 という名前AddProduct.aspxのフォルダーに新しいコンテンツ ページをAdmin追加し、マスター ページにSite.masterバインドしてください。 図 5 は、このページが Web サイトに追加された後のソリューション エクスプローラーを示しています。

管理 フォルダーに新しい ASP.NET ページを追加する

図 05: フォルダーに新しい ASP.NET ページを Admin 追加する (フルサイズの画像を表示する] をクリックします)

マスター ページでのタイトル、メタ タグ、およびその他の HTML ヘッダーの指定に関するチュートリアルでは、ページのタイトルが明示的に設定されていない場合に生成される という名前BasePageのカスタム 基本ページ クラスを作成したことを思い出してください。 ページの AddProduct.aspx 分離コード クラスに移動し、 から BasePage 派生させます ( System.Web.UI.Pageからではなく)。

最後に、このレッスンの Web.sitemap エントリを含むようにファイルを更新します。 [コントロール ID の名前付けの問題] レッスンの の下 <siteMapNode> に次のマークアップを追加します。

<siteMapNode url="~/Admin/AddProduct.aspx" title="Content to Master Page Interaction" />

図 6 に示すように、この <siteMapNode> 要素の追加はレッスンの一覧に反映されます。

AddProduct.aspx戻ります。 ContentPlaceHolder の Content コントロールで MainContent 、DetailsView コントロールを追加し、 という名前を付けます NewProduct。 DetailsView を という名前 NewProductDataSourceの新しい SqlDataSource コントロールにバインドします。 手順 1 の SqlDataSource と同様に、Northwind データベースを使用してカスタム SQL ステートメントを指定するようにウィザードを構成します。 DetailsView を使用してデータベースに項目を追加するため、ステートメントと ステートメントの両方を SELECT 指定する INSERT 必要があります。 次のクエリを使用します SELECT

SELECT ProductName, UnitPrice FROM Products

次に、[挿入] タブから次 INSERT のステートメントを追加します。

INSERT INTO Products(ProductName, UnitPrice) VALUES(@ProductName, @UnitPrice)

ウィザードが完了したら、DetailsView のスマート タグに移動し、[挿入を有効にする] チェックボックスをチェックします。 これにより、プロパティが True に設定された状態で ShowInsertButton 、CommandField が DetailsView に追加されます。 この DetailsView はデータの挿入にのみ使用されるため、DetailsView の DefaultMode プロパティを に Insert設定します。

これですべて完了です。 このページをテストしてみましょう。 ブラウザーからアクセス AddProduct.aspx し、名前と価格を入力します (図 6 を参照)。

データベースに新しい製品を追加する

図 06: データベースに新しい製品を追加する (フルサイズの画像を表示するをクリックします)

新しい製品の名前と価格を入力したら、[挿入] ボタンをクリックします。 これにより、フォームがポストバックされます。 ポストバックでは、SqlDataSource コントロールの INSERT ステートメントが実行されます。その 2 つのパラメーターには、DetailsView の 2 つの TextBox コントロールにユーザーが入力した値が設定されます。 残念ながら、挿入が発生したという視覚的なフィードバックはありません。 新しいレコードが追加されたことを確認するメッセージを表示すると便利です。 これは読者の演習として残しておきます。 また、DetailsView から新しいレコードを追加した後も、マスター ページの GridView には以前と同じ 5 つのレコードが表示されます。追加されたレコードは含まれません。 この問題を解決する方法については、今後の手順で確認します。

注意

挿入が成功したことを示す何らかの形式の視覚的フィードバックを追加することに加えて、DetailsView の挿入インターフェイスを更新して検証を含めることもできます。 現在、検証はありません。 ユーザーがフィールドに無効な値 UnitPrice ("コストがかかりすぎる" など) を入力した場合、システムがその文字列を 10 進数に変換しようとすると、ポストバック時に例外がスローされます。 挿入インターフェイスのカスタマイズの詳細については、「データの操作」チュートリアル シリーズの「データ変更インターフェイスのカスタマイズチュートリアルを参照してください。

手順 3: マスター ページでパブリック プロパティとメソッドを作成する

手順 1 では、マスター ページの GridView の上に という名前 GridMessage のラベル Web コントロールを追加しました。 このラベルは、必要に応じてメッセージを表示することを目的としています。 たとえば、テーブルに新しいレコードを Products 追加した後に、"ProductName がデータベースに追加されました" というメッセージを表示できます。マスター ページでこのラベルのテキストをハードコーディングするのではなく、コンテンツ ページでメッセージをカスタマイズできるようにしたい場合があります。

Label コントロールはマスター ページ内で保護されたメンバー変数として実装されているため、コンテンツ ページから直接アクセスすることはできません。 コンテンツ ページ (またはマスター ページ内の任意の Web コントロール) からマスター ページ内のラベルを操作するには、Web コントロールを公開するか、プロパティの 1 つにアクセスできるプロキシとして機能するパブリック プロパティをマスター ページに作成する必要があります。 次の構文をマスター ページの分離コード クラスに追加して、Label の Text プロパティを公開します。

Public Property GridMessageText() As String 
 Get
 Return GridMessage.Text 
 End Get 
 Set(ByVal Value As String) 
 GridMessage.Text = Value 
 End Set 
End Property

コンテンツ ページから新しいレコードがテーブルに Products 追加されると、 RecentProducts マスター ページの GridView は基になるデータ ソースに再バインドする必要があります。 GridView を再バインドするには、そのメソッドを DataBind 呼び出します。 マスター ページの GridView にはプログラムでコンテンツ ページにアクセスできないため、マスター ページでパブリック メソッドを作成し、呼び出されたときにデータを GridView に再バインドする必要があります。 マスター ページの分離コード クラスに次のメソッドを追加します。

Public Sub RefreshRecentProductsGrid() 
 RecentProducts.DataBind()
End Sub

プロパティとメソッドをGridMessageText配置すると、コンテンツ ページで Label Text のプロパティのGridMessage値をプログラムで設定または読み取ったり、データを GridView にRecentProducts再バインドRefreshRecentProductsGridしたりできます。 手順 4 では、コンテンツ ページからマスター ページのパブリック プロパティとメソッドにアクセスする方法を確認します。

注意

マスター ページのプロパティとメソッド Publicを としてマークすることを忘れないでください。 これらのプロパティとメソッド Publicを として明示的に示さない場合、コンテンツ ページからはアクセスできません。

手順 4: コンテンツ ページからマスター ページのパブリック メンバーを呼び出す

マスター ページに必要なパブリック プロパティとメソッドが用意されたので、コンテンツ ページからこれらのプロパティとメソッドを呼び出す準備ができました AddProduct.aspx 。 具体的には、新しい製品がデータベースに追加された後、マスター ページの GridMessageText プロパティを設定し、その RefreshRecentProductsGrid メソッドを呼び出す必要があります。 すべての ASP.NET データ Web コントロールは、さまざまなタスクを完了する直前と後にイベントを発生させます。これにより、ページ開発者は、タスクの前後にプログラムによる操作を簡単に実行できます。 たとえば、エンド ユーザーが DetailsView の [挿入] ボタンをクリックすると、ポストバック時に DetailsView によってイベントが発生 ItemInserting してから、挿入ワークフローが開始されます。 次に、レコードをデータベースに挿入します。 その後、DetailsView によってイベントが発生します ItemInserted 。 したがって、新しい製品の追加後にマスター ページを操作するには、DetailsView の ItemInserted イベントのイベント ハンドラーを作成します。

コンテンツ ページをプログラムでマスター ページと連携するには、次の 2 つの方法があります。

  • プロパティを Page.Master 使用して、マスター ページへの緩やかに型指定された参照を返します。
  • ディレクティブを使用してページのマスター ページの種類またはファイル パスを @MasterType 指定します。これにより、 という名前 Masterのページに厳密に型指定されたプロパティが自動的に追加されます。

両方の方法を調べてみましょう。

Loosely 型Page.Masterプロパティの使用

すべての ASP.NET Web ページは、 名前空間にある Page クラスから派生する System.Web.UI 必要があります。 クラスにはPage、ページのMasterマスター ページへの参照を返す プロパティが含まれています。 ページにマスター ページ Master がない場合は、 が返されます Nothing

プロパティは Master 、すべてのマスター ページの派生元となる基本型 MasterPage である 型 (名前空間内にも存在 System.Web.UI する) のオブジェクトを返します。 したがって、Web サイトのマスター ページで定義されているパブリック プロパティまたはメソッドを使用するには、 プロパティから返されたオブジェクトをMaster適切な型にキャストMasterPageする必要があります。 マスター ページ ファイル Site.masterに という名前を付けたため、分離コード クラスには という名前が付 Siteけられました。 したがって、次のコードは、 プロパティを Page.Master クラスの Site インスタンスにキャストします。

' Cast the loosely-typed Page.Master property and then set the GridMessageText property 
Dim myMasterPage As Site = CType(Page.Master, Site)

緩やかに型 Page.Master 指定されたプロパティを Site 型にキャストしたので、Site に固有のプロパティとメソッドを参照できます。 図 7 に示すように、IntelliSense ドロップダウンにパブリック プロパティ GridMessageText が表示されます。

IntelliSense には、マスター ページのパブリック プロパティとメソッドが表示されます

図 07: IntelliSense は、マスター ページのパブリック プロパティとメソッドを示しています (フルサイズの画像を表示するには、ここをクリックします)

注意

マスター ページ ファイル MasterPage.master に名前を付けた場合、マスター ページの分離コード クラス名は です MasterPage。 これにより、型 System.Web.UI.MasterPage からクラスにキャストするときに、あいまいなコードが発生する可能性があります MasterPage 。 要するに、キャスト先の型を完全に修飾する必要があります。Web サイト プロジェクト モデルを使用する場合は、少し難しい場合があります。 私の提案は、マスターページを作成するときに、他の名前 MasterPage.master を付けるか、マスターページへの厳密に型指定された参照を作成することです。

ディレクティブを使用した Strongly-Typed 参照の@MasterType作成

よく見ると、ASP.NET ページの分離コード クラスが部分クラスであることがわかります (クラス定義のキーワード (keyword)に注意Partialしてください)。 部分クラスは C# と Visual Basic with.NET Framework 2.0 で導入され、簡単に言うと、クラスのメンバーを複数のファイル間で定義できます。 分離コード クラス ファイル ( AddProduct.aspx.vbなど) には、ページ開発者が作成するコードが含まれています。 コードに加えて、ASP.NET エンジンは、宣言型マークアップをページのクラス階層に変換する プロパティとイベント ハンドラーを含む別のクラス ファイルを自動的に作成します。

ASP.NET ページにアクセスするたびに発生する自動コード生成は、かなり興味深く便利な可能性に道を開きます。 マスター ページの場合、コンテンツ ページで使用されているマスター ページを ASP.NET エンジンに伝えると、厳密に型指定された Master プロパティが生成されます。

ディレクティブを@MasterType使用して、コンテンツ ページのマスター ページの種類を ASP.NET エンジンに通知します。 ディレクティブは @MasterType 、マスター ページの型名またはそのファイル パスを受け取ることができます。 ページが AddProduct.aspx マスター ページとして使用 Site.master することを指定するには、 の先頭に次の AddProduct.aspxディレクティブを追加します。

<%@ MasterType VirtualPath="~/Site.master" %>

このディレクティブは、 という名前 Masterのプロパティを使用して、マスター ページに厳密に型指定された参照を追加するように ASP.NET エンジンに指示します。 ディレクティブを@MasterType配置すると、マスター ページのパブリック プロパティとメソッドを、 プロパティを通じてMasterキャストなしで直接呼び出Site.masterすことができます。

注意

ディレクティブを @MasterType 省略すると、 構文 Page.MasterMaster 、ページのマスター ページに緩やかに型指定されたオブジェクトと同じものを返します。 ディレクティブを含める場合は @MasterTypeMaster 指定したマスター ページへの厳密に型指定された参照を返します。 Page.Masterただし、 は、緩やかに型指定された参照を返します。 この場合の理由と、 ディレクティブが含まれている場合@MasterTypeMasterプロパティの作成方法の詳細については、ASP.NET 2.0 の K. Scott Allen のブログ エントリ@MasterTypeを参照してください。

新しい製品を追加した後のマスター ページの更新

コンテンツ ページからマスター ページのパブリック プロパティとメソッドを呼び出す方法を確認したので、新しい製品を追加した後にマスター ページが更新されるようにページを更新 AddProduct.aspx する準備ができました。 手順 4 の開始時に、DetailsView コントロールの ItemInserting イベントのイベント ハンドラーを作成しました。これは、新しい製品がデータベースに追加された直後に実行されます。 そのイベント ハンドラーに次のコードを追加します。

Protected Sub NewProduct_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles NewProduct.ItemInserted
 ' Cast the loosely-typed Page.Master property and then set the GridMessageText property 
 Dim myMasterPage As Site = CType(Page.Master, Site) 
 myMasterPage.GridMessageText = String.Format("{0} added to grid...", e.Values("ProductName"))
 ' Use the strongly-typed Master property 
 Master.RefreshRecentProductsGrid()
End Sub

上記のコードでは、緩やかに型指定された Page.Master プロパティと厳密に型指定されたプロパティの両方を Master 使用します。 プロパティが GridMessageText "ProductName を grid... に追加しました" に設定されていることに注意してください。追加した製品の値にはコレクションから e.Values アクセスできます。ご覧のように、追加された値 ProductName には を使用して e.Values("ProductName")アクセスします。

図 8 は、 AddProduct.aspx 新しい製品である Scott's Soda がデータベースに追加された直後のページを示しています。 追加したばかりの製品名はマスター ページのラベルに表示され、GridView は製品とその価格を含むように更新されていることに注意してください。

マスター ページのラベルと GridView Just-Added 製品を表示する

図 08: マスター ページのラベルと GridView Just-Added 製品を表示します (フルサイズの画像を表示する をクリックします)

まとめ

理想的には、マスター ページとそのコンテンツ ページは互いに完全に分離されており、対話のレベルは必要ありません。 マスター ページとコンテンツ ページは、その目標を念頭に置いて設計する必要がありますが、コンテンツ ページがマスター ページとインターフェイスする必要がある一般的なシナリオがいくつかあります。 最も一般的な理由の 1 つは、コンテンツ ページでトランスパイルされたアクションに基づいてマスター ページ表示の特定の部分を更新することです。

良いニュースは、コンテンツ ページをプログラムでマスター ページと対話させるのは比較的簡単です。 まず、コンテンツ ページによって呼び出される必要がある機能をカプセル化するパブリック プロパティまたはメソッドをマスター ページに作成します。 次に、コンテンツ ページで、疎型 Page.Master プロパティを使用してマスター ページのプロパティとメソッドにアクセスするか、 ディレクティブを @MasterType 使用してマスター ページへの厳密に型指定された参照を作成します。

次のチュートリアルでは、マスター ページをプログラムでコンテンツ ページの 1 つと対話させる方法について説明します。

プログラミングに満足!

もっと読む

このチュートリアルで説明するトピックの詳細については、次のリソースを参照してください。

著者について

複数の ASP/ASP.NET 書籍の著者であり、4GuysFromRolla.com の創設者である Scott Mitchell は、1998 年から Microsoft Web テクノロジと協力しています。 Scott は、独立したコンサルタント、トレーナー、ライターとして働いています。 彼の最新の本は サムズ・ティーチ・自分自身 ASP.NET 24時間で3.5です。 Scott は、 または mitchell@4GuysFromRolla.com のブログから http://ScottOnWriting.NETアクセスできます。

特別な感謝

このチュートリアル シリーズは、多くの役に立つ校閲者によってレビューされました。 このチュートリアルのリード レビュー担当者は Zack Jones でした。 今後の MSDN の記事を確認することに関心がありますか? もしそうなら、私に行を落としてください mitchell@4GuysFromRolla.com