コンテンツ ページからマスター ページと対話する (C#)
コンテンツ ページのコードからマスター ページのメソッドの呼び出し、プロパティの設定などを行う方法を調べます。
はじめに
過去 5 つのチュートリアルでは、マスター ページを作成し、コンテンツ領域を定義し、ページをマスター ページにバインド ASP.NET、ページ固有のコンテンツを定義する方法について説明しました。 訪問者が特定のコンテンツ ページを要求すると、コンテンツとマスター ページのマークアップが実行時に融合され、統合されたコントロール階層がレンダリングされます。 そのため、マスター ページとそのコンテンツ ページの 1 つが対話できる 1 つの方法を既に確認しました。コンテンツ ページはマークアップをスペルアウトしてマスター ページの ContentPlaceHolder コントロールに変換します。
まだ調べていないのは、マスター ページとコンテンツ ページがプログラムで対話する方法です。 コンテンツ ページでは、マスター ページの ContentPlaceHolder コントロールのマークアップを定義するだけでなく、そのマスター ページのパブリック プロパティに値を割り当てて、そのパブリック メソッドを呼び出すこともできます。 同様に、マスター ページはコンテンツ ページと対話できます。 マスター ページとコンテンツ ページ間のプログラムによる操作は、宣言型マークアップ間の相互作用よりも一般的ではありませんが、このようなプログラムによる操作が必要になるシナリオは多数あります。
このチュートリアルでは、コンテンツ ページがプログラムによってマスター ページと対話する方法について説明します。次のチュートリアルでは、マスター ページがコンテンツ ページと同様に対話する方法について説明します。
コンテンツ ページとそのマスター ページ間のプログラムによる相互作用の例
ページの特定の領域をページ単位で構成する必要がある場合は、ContentPlaceHolder コントロールを使用します。 しかし、ページの大半が特定の出力を出力する必要があるが、少数のページで他のものを表示するためにカスタマイズする必要がある状況はどうでしょうか。 このような例の 1 つは、 Multiple ContentPlaceHolders と Default Content のチュートリアルで調べましたが、各ページにログイン インターフェイスを表示する必要があります。 ほとんどのページにはログイン インターフェイスを含める必要があります。たとえば、メイン ログイン ページ (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 つの BoundField が生成され、データベースから返された フィールドと 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
のステートメントを追加します。
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 コントロール) からマスター ページ内の Label を操作するには、Web コントロールを公開するパブリック プロパティをマスター ページに作成するか、そのプロパティの 1 つにアクセスできるプロキシとして機能するパブリック プロパティを作成する必要があります。 次の構文をマスター ページの分離コード クラスに追加して、Label の Text
プロパティを公開します。
public string GridMessageText
{
get
{
return GridMessage.Text;
}
set
{
GridMessage.Text = value;
}
}
コンテンツ ページから新しいレコードがテーブルに Products
追加されると、 RecentProducts
マスター ページの GridView は基になるデータ ソースに再バインドする必要があります。 GridView を再バインドするには、そのメソッドを DataBind
呼び出します。 マスター ページの GridView はコンテンツ ページからプログラムでアクセスできないため、マスター ページにパブリック メソッドを作成する必要があります。このメソッドを呼び出すと、データが GridView に再バインドされます。 マスター ページの分離コード クラスに次のメソッドを追加します。
public void RefreshRecentProductsGrid()
{
RecentProducts.DataBind();
}
プロパティとメソッドを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
がない場合、 は を返します null
。
プロパティは Master
、すべてのマスター ページの派生元となる基本型 MasterPage
である型 (名前空間内にも存在 System.Web.UI
する) のオブジェクトを返します。 したがって、Web サイトのマスター ページで定義されているパブリック プロパティまたはメソッドを使用するには、 プロパティから返されたオブジェクトをMasterPage
Master
適切な型にキャストする必要があります。 マスター ページ ファイル Site.master
に という名前を付けたので、分離コード クラスには という名前が付 Site
けられました。 したがって、次のコードは、 プロパティを Page.Master
Site クラスのインスタンスにキャストします。
// Cast the loosely-typed Page.Master property and then set the GridMessageText property
Site myMasterPage = Page.Master as 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.cs
など) には、ページ開発者が作成するコードが含まれています。 コードに加えて、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 void NewProduct_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
// Cast the loosely-typed Page.Master property and then set the GridMessageText property
Site myMasterPage = Page.Master as Site;
myMasterPage.GridMessageText = string.Format("{0} added to grid...", e.Values["ProductName"]);
// Use the strongly-typed Master property
Master.RefreshRecentProductsGrid();
}
上記のコードでは、緩やかに型指定された 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 を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示