为什么我们使用@Master类型?

时间:2012-01-20 19:20:40

标签: c# asp.net master-pages content-pages

如果我们有一个母版页和一个内容页面。那么内容页面@Page指令看起来像

<%@ Page Language="C#" MasterPageFile="~/Site1.Master" .... />

因此,为了访问内容页面中的母版页控件,我们必须使用

<%@ MasterType VirtualPath="~/Site1.Master" %>

所以,我的问题是,当我们在@page指令中定义此内容页面位于母版页(此处为Site1.Master)时,我们使用@MasterType指令

2 个答案:

答案 0 :(得分:22)

MSDN开始,您定义的是MasterPage的类型,而不仅仅是Master类的基类类型,它还允许您直接访问MasterTypes属性。

  

提供一种在从Master属性访问母版页时创建对ASP.NET母版页的强类型引用的方法。

this.Master.SomePublicPropertyOfMaster = Value;

答案 1 :(得分:0)

用类型MyMasterPage指定@ MasterType指令会在类后面的代码中产生以下属性定义:

public new MyMasterPage Master {
  get {
    return ({MyMasterPage})base.Master;
  }
}

此属性定义是通过TemplateControlCodeDomTreeGenerator类的BuildMiscClassMembers方法创建的。