4

我知道 ViewState 在 LoadViewSate 方法中的 InitComplete 和 Preload 事件之间可用。同样,我想知道我们可以在哪个页面生命周期事件中为特定页面分配母版页?

4

2 回答 2

7

由于在页面处理的初始化阶段合并了母版页和内容页,因此在此之前必须分配母版页。通常,您在 PreInit 阶段动态分配母版页

Page PreInit活动现场

void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "~/MyMaster.master";
}

阅读以编程方式使用 ASP.NET 母版页

于 2013-04-15T14:17:55.653 回答
3

来自:ASP.NET 页面生命周期概述

页面事件

典型用途

预初始化

在启动阶段完成后和初始化阶段开始之前引发。将此事件用于以下情况:

检查 IsPostBack 属性以确定这是否是第一次处理页面。此时还设置了 IsCallback 和 IsCrossPagePostBack 属性。

  • 创建或重新创建动态控件。
  • 动态设置母版页。
  • 动态设置 Theme 属性。
  • 读取或设置配置文件属性值。

注意 如果请求是回发,则控件的值尚未从视图状态中恢复。如果您在此阶段设置控件属性,则其值可能会在下一个事件中被覆盖。

来自:动态附加母版页

除了以声明方式(在 中@ Page directive or in the configuration file)指定母版页外,您还可以将母版页动态附加到内容页。由于在页面处理的初始化阶段合并了母版页和内容页,因此在此之前必须分配母版页。通常,您在PreInit阶段动态分配母版页,如下例所示:

void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "~/DefaultMaster.master";
}

编辑:

来源: ASP.NET 母版页 - 母版页如何工作
您也可以使用 @Page 指令来指定母版页。

<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
于 2013-04-15T14:23:10.530 回答