`
ljzforever
  • 浏览: 114653 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

vs2005中母版页嵌套时无法切换到设计视图的解决办法

阅读更多

假设有母版页第一级母版页MasterPage.master,第二级母版页MasterPage2.master是MasterPage.master的内容页,Default.aspx是MasterPage2.master的内容页,一般情况下Default.aspx是打不开设计视图的(MasterPage2.master也打不开,但无法解决),在网上找了找,有两种解决办法:

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" %>

 

 最后修改Default.aspx的后台代码的继承:

修改前:

public partial class Demo_Default : System.Web.UI.Page

 

修改后:

public partial class _Default : BasePage

 

 经过以上三步的修改,就可以打开Default.aspx的设计视图了

 

2.其实还有更简单的一种方法:

就是在Default.aspx的Page指令的MasterPageFile="MasterPage2.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的设计视图了

 

在第一种方法中

MasterPageFile值为空,意思是编辑时无母版页,RuntimeMasterPageFile值是嵌套母版页,意思是运行时有母版页,CodeFileBaseClass的意思是你的页面类继承自:BasePage。如果不加CodeFileBaseClass,则会报错,因为RuntimeMasterPageFile不是Page的默认指令。

第二种方法则是取了个巧,其实,在后面加任何一个字母都可以。也就是说,在切换视图的时候,只要保证和正确的母版页地址有错误,那么就能够切换。但是用其他字母会造成无法运行的情况,因为加了其他字母,也就是换成了别的母版页,而实际并不存在这个母版页。而用空格的话,它在运行时,去找母版页的时候,是做了一个TRIM的动作,去掉了空格。所以,加空格即可以切换也可以运行。

 

在打开 Default.aspx的设计视图时可能不是按照你想象中的顺序排的,不用管他,它在运行的时候会自动排好的!

 

Demo下载:

http://ljzforever.qupan.com/?folder=951925 

 

参考的文章:

VS2005中显示使用嵌套母版的设计视图

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

VS2005的关于母版页嵌套的一个小技巧

http://xjhami.bokee.com/viewdiary.17350816.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics