从Master Behind将主页面分配给嵌套母版页

时间:2014-09-22 13:47:05

标签: nested master-pages

我有一个父级MasterPage(Main.master)和一个子级NestedMasterPage

在NestedMasterPage中我已经在html代码中分配了MasterPageFile属性,如下所示

<%@ Master Language="C#" AutoEventWireup="true" MasterPageFile="~/Themes/ABC/Main.Master" CodeBehind="User_Main.master.cs" Inherits="ProjectABC.UI.Pages.MasterPages.User_Main" %>

现在在NestedMasterPage的代码后面我试图将MasterPageFile属性更改为其他一些MasterPage,但它不起作用。

protected void Page_PreInit(object sender, EventArgs e)
{
    MasterPageFile = "~/Themes/XYZ/Main.Master";
}

没有代码错误,只是HTML分配的路径正在运行而不是后面的代码。我错过了什么???

1 个答案:

答案 0 :(得分:0)

此问题背后的原因是,在asp.net页面生命周期中永远不会调用母版页文件的PreInit()事件。您可以看到完整的主页和相关页面事件here

您可以通过以下方式在内容页面PreInit()事件中设置子母版页的母版页:

public partial class TestMaster : System.Web.UI.Page
{
    protected void Page_PreInit(object sender, EventArgs e)
    {
        //Set the master page file of the current pages master.
        this.Master.MasterPageFile = "~/NewMasterPage.master";
    }
}