コンテンツ ページからマスター ページと対話する (VB)
コンテンツ ページのコードからマスター ページのメソッドの呼び出し、プロパティの設定などを行う方法を確認します。
はじめに
過去 5 つのチュートリアルでは、マスター ページの作成、コンテンツ領域の定義、マスター ページへの ASP.NET ページのバインド、ページ固有のコンテンツの定義を行う方法について説明しました。 訪問者が特定のコンテンツ ページを要求すると、実行時にコンテンツとマスター ページのマークアップが融合され、統合されたコントロール階層がレンダリングされます。 そのため、マスター ページとそのコンテンツ ページの 1 つが対話できる 1 つの方法を既に見てきました。コンテンツ ページでは、マスター ページの ContentPlaceHolder コントロールに変換するマークアップがスペル アウトされます。
まだ調べていないのは、マスター ページとコンテンツ ページがプログラムで対話する方法です。 コンテンツ ページでは、マスター ページの ContentPlaceHolder コントロールのマークアップを定義するだけでなく、そのマスター ページのパブリック プロパティに値を割り当てて、そのパブリック メソッドを呼び出すこともできます。 同様に、マスター ページは、そのコンテンツ ページとやり取りする場合があります。 マスター ページとコンテンツ ページ間のプログラムによる操作は、宣言型マークアップ間の相互作用よりも一般的ではありませんが、このようなプログラムによる操作が必要になるシナリオは多数あります。
このチュートリアルでは、コンテンツ ページがプログラムによってマスター ページと対話する方法について説明します。次のチュートリアルでは、マスター ページがコンテンツ ページと同様に対話する方法について説明します。
コンテンツ ページとそのマスター ページ間のプログラムによる相互作用の例
ページの特定の領域をページ単位で構成する必要がある場合は、ContentPlaceHolder コントロールを使用します。 しかし、ページの大部分が特定の出力を出力する必要があるが、少数のページで他のものを表示するようにカスタマイズする必要がある状況はどうでしょうか。 このような例の 1 つは、 複数の ContentPlaceHolders と既定のコンテンツ のチュートリアルで確認したものですが、各ページにログイン インターフェイスを表示する必要があります。 ほとんどのページにはログイン インターフェイスを含める必要があります。たとえば、メイン ログイン ページ (Login.aspx
)、アカウントの作成ページ、認証されたユーザーのみがアクセスできるその他のページなど、いくつかのページでは非表示にする必要があります。 Multiple ContentPlaceHolders と Default Content のチュートリアルでは、マスター ページで ContentPlaceHolder の既定のコンテンツを定義する方法と、既定のコンテンツが不要なページでオーバーライドする方法について説明しました。
もう 1 つのオプションは、ログイン インターフェイスを表示または非表示にするかどうかを示すパブリック プロパティまたはメソッドをマスター ページ内に作成することです。 たとえば、マスター ページには、 という名前 ShowLoginUI
のパブリック プロパティが含まれ、その値はマスター ページの Login コントロールのプロパティを設定 Visible
するために使用されます。 ログイン ユーザー インターフェイスを抑制する必要があるコンテンツ ページでは、プログラムによって プロパティを ShowLoginUI
に False
設定できます。
コンテンツとマスター ページの相互作用の最も一般的な例は、コンテンツ ページで何らかのアクションが発生した後にマスター ページに表示されるデータを更新する必要がある場合に発生します。 特定のデータベース テーブルから最後に追加された 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
の プロパティをクリアし、そのプロパティを EnableViewState
に False
設定し、その ID
プロパティを に GridMessage
設定します。GridView の ID
プロパティを に RecentProducts
設定します。 次に、Designerから GridView のスマート タグを展開し、新しいデータ ソースにバインドすることを選択します。 これにより、データ ソース構成ウィザードが起動します。 フォルダー内App_Data
の Northwind データベースは Microsoft SQL Server データベースであるため、 を選択して SqlDataSource を作成します (図 1 を参照)。SqlDataSource という名前を付けますRecentProductsDataSource
。
図 01: という名前 RecentProductsDataSource
の SqlDataSource コントロールに GridView をバインドします (フルサイズの画像を表示する 場合はクリックします)
次の手順では、接続先のデータベースを指定するように求められます。 NORTHWIND.MDF
ドロップダウン リストからデータベース ファイルを選択し、[次へ] をクリックします。 このデータベースを初めて使用するため、ウィザードは に接続文字列Web.config
を格納するように指定します。 という名前NorthwindConnectionString
を使用して接続文字列を格納します。
図 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
結果を並べ替えた場合、最後に作成された製品から製品が返されます。
図 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 つの製品が一覧表示されます。
図 04: GridView には、最近追加された 5 つの製品が表示されます (フルサイズの画像を表示する をクリックします)
注意
GridView の外観を自由にクリーンしてください。 表示される UnitPrice
値を通貨として書式設定したり、背景色やフォントを使用してグリッドの外観を改善したりすることが提案されています。
手順 2: コンテンツ ページを作成して新しい製品を追加する
次のタスクは、ユーザーがテーブルに新しい製品を追加できるコンテンツ ページを Products
作成することです。 という名前AddProduct.aspx
のフォルダーに新しいコンテンツ ページをAdmin
追加し、マスター ページにSite.master
バインドしてください。 図 5 は、このページが Web サイトに追加された後のソリューション エクスプローラーを示しています。
図 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
が表示されます。
図 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.Master
は Master
、ページのマスター ページに緩やかに型指定されたオブジェクトと同じものを返します。 ディレクティブを含める場合は @MasterType
、 Master
指定したマスター ページへの厳密に型指定された参照を返します。 Page.Master
ただし、 は、緩やかに型指定された参照を返します。 この場合の理由と、 ディレクティブが含まれている場合@MasterType
のMaster
プロパティの作成方法の詳細については、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 は製品とその価格を含むように更新されていることに注意してください。
図 08: マスター ページのラベルと GridView Just-Added 製品を表示します (フルサイズの画像を表示する をクリックします)
まとめ
理想的には、マスター ページとそのコンテンツ ページは互いに完全に分離されており、対話のレベルは必要ありません。 マスター ページとコンテンツ ページは、その目標を念頭に置いて設計する必要がありますが、コンテンツ ページがマスター ページとインターフェイスする必要がある一般的なシナリオがいくつかあります。 最も一般的な理由の 1 つは、コンテンツ ページでトランスパイルされたアクションに基づいてマスター ページ表示の特定の部分を更新することです。
良いニュースは、コンテンツ ページをプログラムでマスター ページと対話させるのは比較的簡単です。 まず、コンテンツ ページによって呼び出される必要がある機能をカプセル化するパブリック プロパティまたはメソッドをマスター ページに作成します。 次に、コンテンツ ページで、疎型 Page.Master
プロパティを使用してマスター ページのプロパティとメソッドにアクセスするか、 ディレクティブを @MasterType
使用してマスター ページへの厳密に型指定された参照を作成します。
次のチュートリアルでは、マスター ページをプログラムでコンテンツ ページの 1 つと対話させる方法について説明します。
プログラミングに満足!
もっと読む
このチュートリアルで説明するトピックの詳細については、次のリソースを参照してください。
- ASP.NET でのデータへのアクセスと更新
- ASP.NET マスター ページ: ヒント、テクニック、トラップ
@MasterType
ASP.NET 2.0- コンテンツとマスター ページの間で情報を渡す
- ASP.NET チュートリアルでのデータの操作
著者について
複数の 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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示