我有一个父级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分配的路径正在运行而不是后面的代码。我错过了什么???
答案 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";
}
}