由于.net 2.0 很快就要发布了,大家都会面临一个IDE环境迁移(vs.net 2005)和.net 2.0新特性的应用问题,在接下来的一些文章,我会做一些asp.net 2.0的专题,写这些文章的初衷是想为很多分析Community Server的Coder们提供一个在我能力范围内的帮助,让大家看到一些新技术是如何诞生和被应用的,很大一部分新特性对于一个熟悉Community Server的Coder来说根本算不上新,因为它们早就被应用在CS中。专题主要包括:MasterPage、Theme、本地化、SiteMap等。
这一系列的专题编写环境是winxp sp2,vs.net 2005 beta2,SQL Server2005 CTP,.Net Framework Version 2.0.50215。
好了,打开vs.net 2005新建一个web project吧:
这个专题中主要讲解的是MasterPage,什么是MasterPage,先不解释,我后面再来看这个定义,给刚刚建立的工程添加一个MasterPage:MasterPage以master为后缀名,我们刚刚建立了一个MasterPage.master文件,该文件有如下内容:
粗看还以为这是一个普通的
表面明这是一个master文件,同时在页面中你可以看到用<div>包裹着的一个asp控件
Contentplaceholder,这个叫“内容占位符”,他的作用就是先通过div或者table进行分割,然后“霸占”一个地方,声明此地有“主”了,不过主人不是Contentplaceholder,而是后面会说道到的Content控件。
注意:<div>一般通过css样式表来控制页面的布局,如cnblogs里面的很多皮肤都是如此,为了不把问题复杂化,我还是用table。在Design状态下画出如下表格(vs.net 2005 的Design功能真的好用很多^_^):
这是一个很标准的网页页面布局,下一步就把Contentplaceholder放进去“占地盘”“:
放完后我们把各个部分的ContentPlaceHolder重新命名一次,更改后的代码如下:
<%
@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<table width="60%">
<tr>
<td colspan="3" height="80">
<asp:ContentPlaceHolder ID="TopContent" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
<tr>
<td height="300" width="25%">
<asp:ContentPlaceHolder ID="LeftContent" runat="server">
</asp:ContentPlaceHolder>
</td>
<td>
<asp:ContentPlaceHolder ID="CenterContent" runat="server">
</asp:ContentPlaceHolder>
</td>
<td width="25%">
<asp:ContentPlaceHolder ID="RightContent" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
<tr>
<td colspan="3" style="height: 80px">
<asp:ContentPlaceHolder ID="CopyrightContent" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
</table>
</form>
</body>
</html>
aspx页面,其实不是,最上面的<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>