誰もが ASP.NET 2.0 でネストされたマスターページ機能を使用したことがあると思います。この機能は非常に強力で、ユーザーは最初にテンプレート ページを作成し、それを他のページに簡単に適用できます。さらに、テンプレート ページはネストできますが、ネストされたテンプレート ページには問題が見つかります。つまり、ネストされたテンプレート ページを使用する場合、デザイン ビューの状態で視覚的な操作を実行する方法がないため、これを解決する方法がわかります。問題?外国人のブログを検索したところ、その外国人が提供していた方法を見つけたので、とりあえずこの問題を解決する方法を以下に説明します。
Basepage.cs という基本クラスを作成し、それを app_code ディレクトリに配置します。このクラスに、basepage.cs というクラスを追加します。
runtimeMasterPageFile の属性は、実行時に使用するテンプレート ファイルを指定する文字列タイプで、OnPreInit をオーバーライドします。
メソッド、コードは次のとおりです。
パブリック クラス BasePage : System.Web.UI.Page
{
プライベート文字列 runtimeMasterPageFile;
パブリック文字列 RuntimeMasterPageFile
{
得る
{
runtimeMasterPageFile を返します。
}
セット
{
runtimeMasterPageFile = 値;
}
保護されたオーバーライド void OnPreInit(EventArgs e
)
{
if (runtimeMasterPageFile != null)
{
this.MasterPageFile = runtimeMasterPageFile;
}
Base.OnPreInit(e);
}
次に
、mainmaster.master というテンプレート ページを構築し、その中にヘッダーとフッターの情報をランダムに追加し、MainContent というコンテンツ プレースホルダーを中央に残して、submaster.master というテンプレート ページを構築します。
MasterPageFile="~/MainMaster.master"、メインマスター テンプレート ページを適用するには、次のように 1 行 2 列のテーブルを配置します。
<asp:Content ID="foo" ContentPlaceHolderId="MainContent" runat="server">
<テーブル>
<tr>
<td width="300">
サブマスターの左列
<br />
<asp:ContentPlaceHolder ID="LeftColumn" runat="server">
</asp:ContentPlaceHolder>
</td>
<td>
サブマスターの右列
<br />
<asp:ContentPlaceHolder ID="RightColumn" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
</テーブル>
</asp:コンテンツ>
最後に、aspx ページでこれを指定します
<%@ Page Language="C#" MasterPageFile="" RuntimeMasterPageFile="SubMaster.master" CodeFileBaseClass="BasePage" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="無題のページ" %>
ご覧のとおり、ここでは masyterpage のプロパティを設定せず、RuntimeMasterPageFile のプロパティを次のように指定します。
submaster.master、これは実行時にロードされるテンプレートであり、codefilebaseclass 属性は、作成したばかりのクラス Basepage.cs を指定します。このようにして、この ASPX のデザイン ビュー状態でのプルを確認し、ドラッグ アンド ドロップできます。デザイン。
なお、Microsoftによれば、テンプレートがネストされている場合のフルデザインのビューステートの切り替えが完全にサポートされるのは、VISUAL STUDIOの次のバージョンになる予定だという。
この記事のサンプルのダウンロードを提供しました。ここをクリックしてダウンロードしてください。