ASP.Net以编程方式更改MasterPage

Mar*_*rco 9 c# asp.net master-pages

我在ASPX方面有以下代码:

<%@ Page Language="C#" MasterPageFile="~/masterpages/standard.Master" .... %>
<%@ MasterType VirtualPath="~/masterpages/standard.Master" %>
Run Code Online (Sandbox Code Playgroud)

我使用VirtualPath访问我的MasterPage中的属性.到现在为止还挺好.

但是,现在我必须以编程方式更改主页.我知道要更改母版页,我必须在page_init上执行:

Page.MasterPageFile = "~/masterpages/myNewMasterPage.Master";
Run Code Online (Sandbox Code Playgroud)

但我不知道如何更改VirtualPath.

Nic*_*ver 2

我假设您正在使用 MasterType 因为您需要一些属性(如果您更改为另一个 master,您也需要这些属性),假设您当前正在使用 MasterType Master.MyButton,请将其移至基类并在@MasterType声明中使用该类型:

public class MasterBase : MasterPage
{
  public Button MyButton;
}

public class standard : MasterBase
{
}
Run Code Online (Sandbox Code Playgroud)

现在在您的页面中,您的 MasterType 声明如下所示:

<%@ MasterType TypeName="MyNameSpace.MasterBase" %>
Run Code Online (Sandbox Code Playgroud)

现在,当您更改虚拟路径时,没关系,您正在访问基础中的属性,这对于两个母版页都是相同的。