根据OOP,内容页面和母版页之间的关系是什么?

时间:2010-09-15 10:25:16

标签: c# asp.net

什么是阶级关系?任何人都可以根据OOP帮助解释内容页面和母版页之间的关系吗?

3 个答案:

答案 0 :(得分:1)

我猜你真的在从编程角度询问页面与其母版页之间的关系是什么?我的答案是这种关系不是大多数人会想的。您可能认为MasterPage包含该页面,因为查看html标记和ContentPlaceHolders,MasterPage html元素最终会包含页面上的html元素。

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

我能描述下一步的最佳方式是页面在MasterPage中包装自己。在内容页面的PreInit事件之后,但在其Init事件之前,MasterPage内容将根据MasterPage上ContentPlaceHolders的位置插入到asp:Content块中及其周围。

通常,页面上的事件处理程序在MasterPage上的类似事件之前执行,这与在页面内部和周围注入的控件非常相似。

你可以通过Tim Gaunt的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)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

母版页继承自Sytem.Web.UI.MasterPage,而页面继承自System.Web.UI.Page

但是,将MasterPage视为一种控制。

如果你的问题涉及允许一个人与另一个人交谈,那么有很多技巧可以实现这一目标。

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

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

复杂互动的良好描述如下:

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