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

18
如果我们有一个主页面和一个内容页面,那么内容页面的@Page指令看起来像是什么?
<%@ Page Language="C#" MasterPageFile="~/Site1.Master" .... />

因此,为了在内容页中访问母版页控件,我们应该使用

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

那么,我的问题是为什么当我们已经在 @page 指令中定义了这个内容页面在主页面中(这里是 Site1.Master),我们还要使用 @MasterType 指令呢?

2个回答

25
Microsoft Docs中可以看到,你正在定义Master属性的类型,这使你能够访问基于你的MasterPage派生类的属性。

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

以下是一个例子:

this.Master.SomePublicPropertyOfMaster = Value;

@Lloyd,请问你所说的STRONGLY TYPE是什么意思?由于我是编程新手,所以不太清楚。 - Usman
1
这意味着Type已经明确声明,因此您无需进行强制转换,即:MyMasterPage masterPage = (MyMasterPage)this.MasterPage。 - Lloyd
链接已失效。请尝试使用此链接,https://msdn.microsoft.com/zh-cn/library/ms228274(v=vs.100).aspx - user3207158

3

在使用类型为MyMasterPage的@ MasterType指令时,在代码后台类中会得到以下属性定义:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接