首先,因为这篇内容很少,所以废话居多。顺便提一下,有空在这儿看我这种闲人的笔记并发表详论,甚至有空看电脑报的大叔,您不如多发点时间去做点大叔应该做的事吧。本人不仅虚伪,而且不喜欢任何有意义或无意义的批评。Just For Fun! No Class!
CSDN不知道是为了强烈证明微软的SQL SERVER的强健性,每日每夜总要无数次地为我们展现连接池满的异常提示。为了删除发表上一篇文章时按了N次F5的后遗症,我再一次NF5,总算把多余的文章给删除了。
上次提到的是主题和样式,而这回要提到的是Master Page(有称呼为母页面或者主页面的,总觉得不是很清楚,因此使用英文原词)也是ASP.NET 2.0针对WEB特性的改进之一吧。感觉2.0把普通的WEB特性都引入到服务器了。Master Page从设计上来看有点像是服务器端的框架。
不管是ASP开始的include还是ASP.NET的用户控件,都是页面公共部分的一个解决方案。而2.0引入的Master Page则给了一个更好的选择。
Master Page实际上更像Dreamweaver的模板,只不是,它是实际存在的,而不像Dreamweaver只是存在于设计时。Master Page定义了一个共同风格站点的框架,在它的内部使用占位符来表示实际可以修改的部分。具体语法如下。
在页面的声明中取代Page指令的是Master指令,如<%@ Master Language="C#" %>。Master Page中的语法和普通的页面并没有多少差别,不过有一个占位符控件。如<asp:contentplaceholder id="FlowerText" runat="server"/>。在占位符中的内容则是它的默认内容,如果在使用这个Master Page的ASPX页面中没有为这个占位符提供新的定义,那么它将显示它的默认内容。为了和普通页面区分开来,Master Page以后缀名.master结束。
在页面中使用Master Page的方法是在Page的声明中的MasterPageFile属性指定Master Page的路径。在页面中可以通过定义占位符的内容来显示不同的效果。语法如下(例子Copy自QuickStart):
<asp:content id="Content1" contentplaceholderid="FlowerText" runat="server">
With sunshine, water, and careful tending, roses will bloom several times in a season.
</asp:content>
实际上,页面中如果引用了Master Page,就只能定义占位符对应的内容了。那么不同文件的标题呢?在Page指令中。一个Title属性指定了每页的标题。
Master Page并没有解决链接的相对路径问题,非常遗憾,我们还是得使用绝对路径或者应用程序相关路径(ASP.NET特定的~)来为不同路径下的引用解决路径问题。
为了在代码中调用并修改Master Page的内容,在页面中加入如下指令<%@ MasterType VirtualPath="Site.master" %>。在代码中使用Master. 就可以调用Master中的内容了,这里的调用有两种方法,提供强类型方式的属性或者直接操作Master Page中的控件。
Master Page是可以嵌套的,可以轻松为一个站点制定一个总的框架,再为每个部分制定一个更详细的框架。
在一个Master Page中引用另一个Master Page的语法和Page是一样的,因此,它也只能包含asp:content这样的东东了。
最近的学习都缺少实践,但是对于(形容词略去大约500个字)的我来说,it's nothing。如果在实践后有什么新的看法,再写新的笔记吧。