Asp.net 打开/关闭Web窗体的母版页

Asp.net 打开/关闭Web窗体的母版页,asp.net,webforms,master-pages,Asp.net,Webforms,Master Pages,我知道这是一个奇怪的情况,但这是我必须做的事情,以避免需要相同的页面两次 我有一个通过弹出窗口打开的网络表单,它目前没有母版页,因为它是通过主表单打开的 所以,我的客户告诉我,我必须通过这个弹出窗口或主窗体附近的菜单来打开它。如果我通过菜单打开它,它将像普通页面一样打开,并且需要包含母版页布局 这可能吗?我想你有两个选择: 通过代码设置: 使用用户控件: 创建包含当前页面代码的Usercontrol(.ascx)。然后使用母版页创建第二个页面(.aspx),并在两个页面上注册控件 有关用户控件的

我知道这是一个奇怪的情况,但这是我必须做的事情,以避免需要相同的页面两次

我有一个通过弹出窗口打开的网络表单,它目前没有母版页,因为它是通过主表单打开的

所以,我的客户告诉我,我必须通过这个弹出窗口或主窗体附近的菜单来打开它。如果我通过菜单打开它,它将像普通页面一样打开,并且需要包含母版页布局


这可能吗?

我想你有两个选择:

通过代码设置:

使用用户控件:

创建包含当前页面代码的Usercontrol(.ascx)。然后使用母版页创建第二个页面(.aspx),并在两个页面上注册控件

有关用户控件的一些信息:


我不得不使用不同的方法

我将母版页上的所有元素(页眉、页脚、菜单)设置为
runat=server
,并在不需要母版页布局的地方将它们设置为不可见


这显然是一个肮脏的黑客行为,但它奏效了。

不太可能。如果一个页面被认为是一个有母版的内容页面,那么它不包含整个标记,甚至不包含表单。没有母版,该页面根本无法工作。不过,您可以使用两个不同的母版页,并根据页面的打开方式在它们之间进行切换。这是非常可行的,我认为创建一个空白母版页并设置
This.MasterPage=“myBlankMasterPage.cs”
应该可以,那么?不太确定。首先,您的页面需要更改,以使其看起来与其他页面相似。
 protected override void OnPreInit(EventArgs e)
    {
      base.OnPreInit(e);
      if(xy)
      {  
        this.MasterPageFile = "~/MyMaster.Master"; //Path to masterpage '~' if rootfolder
      }
      else
      {
        this.MasterPageFile = "";
      }
    }