什么是阶级关系?任何人都可以根据OOP帮助解释内容页面和母版页之间的关系吗?
答案 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" %>
复杂互动的良好描述如下: