vs 2005のマスターページネスト時にデザインビューに切り替えられない解決策


マスターページの第1レベルのマスターページがあると仮定します.マスター、第2級マスターページMasterPage 2.マスターはマスターだマスターの内容ページaspxはMasterPage 2.マスターのコンテンツページ、一般的にはDefault.aspxはデザインビューが開かない(MasterPage 2.masterも開かないが、解決できない)ので、ネットで探してみると、2つの解決策があります.
1.まずクラスを追加します:BasePage.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public class BasePage : System.Web.UI.Page
{
    private string runtimeMasterPageFile;
    public string RuntimeMasterPageFile
    {
        get
        {
            return runtimeMasterPageFile;
        }
        set
        {
            runtimeMasterPageFile = value;
        }
    }

    protected override void OnPreInit(EventArgs e)
    {
        if (runtimeMasterPageFile != null)
        {
            this.MasterPageFile = runtimeMasterPageFile;
        }
        base.OnPreInit(e);
    }
}

 
その後、Defaultを変更します.aspxのPage命令:
変更前:
<%@ Page Language="C#" MasterPageFile="MasterPage2.master" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 
変更後:
<%@ Page Language="C#" MasterPageFile="" RuntimeMasterPageFile="MasterPage2.master" CodeFileBaseClass="BasePage" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 
最後に修正aspxのバックグラウンドコードの継承:
変更前:
public partial class Demo_Default : System.Web.UI.Page

 
変更後:
public partial class _Default : BasePage

 
以上の3段階の修正を経て、Defaultを開くことができます.aspxのデザインビュー
 
2.もっと簡単な方法があります.
そうですaspxのPage命令のMasterPageFile=「MasterPage 2.master」の逆引用符の前にスペースを追加
変更前:
<%@ Page Language="C#" MasterPageFile="MasterPage2.master" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> 

変更後:
<%@ Page Language="C#" MasterPageFile="MasterPage2.master " AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 
 
これでDefaultを開くことができます.aspxのデザインビュー
 
1つ目の方法では
MasterPageFileの値は空です.編集時にマスターページがないことを意味します.RuntimeMasterPageFileの値はネストされたマスターページです.実行時にマスターページがあることを意味します.CodeFileBaseClassの意味は、あなたのページクラスが:BasePageから継承されていることです.CodeFileBaseClassを付けないと、RuntimeMasterPageFileはPageのデフォルトコマンドではないため、エラーが発生します.
2つ目の方法は巧みに取ることですが、実際には、後ろにどのアルファベットを入れてもいいです.すなわち,ビューを切り替える際に,正しいマスターページアドレスと誤りがあることを保証すれば,切り替えることができる.しかし、他のアルファベットでは実行できない場合があります.他のアルファベットを加えたため、つまり別のマスターページに変更されたため、実際にはこのマスターページは存在しません.スペースを使うと、実行時にマスターページを探しに行くときにTRIMの動作をしてスペースを外します.したがって、スペースを付けると切り替えたり実行したりできます.
 
開くaspxのデザインビューはあなたが想像していた順序で並べられていないかもしれませんが、彼にかかわらず、実行時に自動的に並べられます.
 
Demoダウンロード:
http://ljzforever.qupan.com/?folder=951925  
 
参考資料:
VS 2005にネストされたマスターを使用したデザインビューを表示
http://blog.csdn.net/sdtsfhh/archive/2008/07/02/2604335.aspx
Tips for Nested Master Pages and VS 2005 Design-Time
http://weblogs.asp.net/scottgu/archive/2005/11/11/430382.aspx
VS 2005のマスターページネストに関する小さなテクニック
http://xjhami.bokee.com/viewdiary.17350816.html