2010-09-15 69 views

回答

0

您的“内容”页面从“基本内容页面”类继承。您的“母版页”继承自“基础母版页”类。在您的内容类中,您可以定义内容页面与主页面之间的关系。基类处理两者之间的主要管道。

1

我想你真的是问从编程的角度来看,页面和它的主页之间有什么关系?我的回答是,这种关系不是大多数人会认为的。您可能认为MasterPage包含页面,因为查看html标记和ContentPlaceHolders,MasterPage html元素最终会包含页面上的html元素。

事实上,这种关系是相反的。 页面拥有MasterPage。页面上的PreInit方法允许您更改母版页。

我可以描述接下来会发生什么的最佳方式是页面在主页中自动换行。在内容页面的PreInit事件之后,但在其Init事件之前,根据MasterPage上ContentPlaceHolders的位置,将MasterPage内容插入到asp:Content块中及其周围。

一般而言,页面上的事件处理程序在MasterPage上的类似事件处理器之前执行,该处理与在页面中和周围注入的控件非常相似。

您可以通过添憔悴在这种blog entry看到这个

提取物:

Page  Start OnLoad(EventArgs e) 
Page  Page_Load(object sender, EventArgs e) 
Page  End OnLoad(EventArgs e) 
MasterPage  Start OnLoad(EventArgs e) 
MasterPage  Page_Load(object sender, EventArgs e) 
MasterPage  End OnLoad(EventArgs e) 
UserControl  Start OnLoad(EventArgs e) 
UserControl  Page_Load(object sender, EventArgs e) 
UserControl  End OnLoad(EventArgs e) 
CustomWebControl  Start OnLoad(EventArgs e) 
CustomWebControl  End OnLoad(EventArgs e) 
0

母版页从Sytem.Web.UI.MasterPage继承,而页面从System.Web.UI程序继承。页

但是,想到一个MasterPage作为一种控制。

如果你的问题涉及到允许一方与另一方交谈,那么有许多技术来完成这一点。

使用指令<%@ MasterType VirtualPath="~/templates/Base.master" %><%@ MasterType TypeName="SomeNamespace.SomeMasterPageBaseClass" %>可以在内容页面和母版页之间建立强大的打字。

如果你处理的嵌套母版页,您还可以使用<%@ Reference VirtualPath="~/templates/base.master" %>

复杂的相互作用的一个很好的说明是在这里:

http://www.odetocode.com/articles/450.aspx