跳转到内容

.NET Framework 3.0 简介 / 主页概述

来自维基教科书,开放世界中的开放书籍

主页首次在 .NET Framework 2.0 中引入,用于创建多个文件具有相似内容的应用程序。主页创建的内容包括标题、页脚等。对于所有页面都具有公共标题的网站,确保在每个页面的代码中插入相同的标题并确保文本对齐等方面的一致性既困难又繁琐。为了克服这一缺陷,我们使用主页。在 .NET 1.1 中,级联样式表用于执行此功能。然而,在 .NET 3.0 中,这些样式表被主页取代。

用于表示主页的语法为

<%@ Master Language="C#" %>
<%@ Master Language="C#" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>


这指定了该页面是一个主页,并在页面的开头给出。

从主页继承内容的 ASP.NET 页面在其中包含以下标签。

<%@ Page Language="VB" MainPageFile="~/MainPages/Master1.main" Title="Content Page" %>

主页的使用

[编辑 | 编辑源代码]

创建主页

[编辑 | 编辑源代码]
  1. 创建新项目
  2. 将主页添加到项目。可以通过单击“添加新项目”并从显示的项目列表中选择“主页”来完成此操作。
  3. 打开主页,并在 ContentPlace Holder 对象正上方输入要显示的内容。
  4. 右键单击项目并单击“添加新项目”。选择“网页”并选中“选择主页”选项,然后单击“确定”。将显示项目文件夹对话框。从显示的文件列表中选择主页文件 (.master),然后单击“确定”。文件将被创建,您会注意到默认情况下会创建“内容”对象。此标签是在选择主页时创建的。如果页面中不需要任何主页,则可以删除此标签。
  5. 运行该文件。您会注意到,在主页文件中的 ContentPlaceHolder 顶部指定的内容将出现在网页上。

嵌套主页

[编辑 | 编辑源代码]

也可以将一个主页嵌套在另一个主页中。设计器不支持主页嵌套;然而,两个或多个主页可以在代码级别嵌套。

SiteMaster.master

[编辑 | 编辑源代码]

SiteMaster 页面完全由 Content 控件组成。

<asp:contentplaceholder id="SiteContentPlaceHolder" runat="server">
<h1>Site Master Page</h1></asp:contentplaceholder>

部分主页

[编辑 | 编辑源代码]

部分主页从网站主页继承。下面给出了网站主页的语法。

<asp:contentplaceholder id="SiteContentPlaceHolder" runat="server">
<h1>Site Master Page</h1></asp:contentplaceholder>

主页范围

[编辑 | 编辑源代码]

主页可以在页面、文件夹或应用程序级别指定。

主页的批评

[编辑 | 编辑源代码]

人们对主页的一个抱怨是,head HTML 标签是在主页中定义的。此元素必须在所有从主页获取布局的页面中共享。有几种方法可以解决此问题,包括使用服务器端代码在运行时修改 head 内容。但是,标题可以通过主页文件声明顶部的 content 页面中的 title 属性自由编辑。实际上,可以在主页的 head 部分放置 ContentPlaceHolder 控件,尽管 Visual Studio 2005 会生成警告。不幸的是,放置在关联的 Content 控件内的标记将作为文字呈现。HtmlHead 对象包含专门的解析例程,以识别 link 和 script 等元素。此解析代码不应用于子 ContentPlaceHolder 控件的子级。但是,有一个解决方法。如果每个 link 和 script 控件都使用 runat="server" 属性,那么它们将被 ContentPlaceHolder 解析为单独的 HtmlGenericControls。然后可以编写代码来遍历每个 HtmlGenericControl,并在执行属性映射后将其替换为适当的控件类型 (HtmlLink、HtmlMeta 等)。[需要引用]

参考文献

[编辑 | 编辑源代码]
  1. http://www.codersource.net/asp_net_master_pages_whidbey.aspx
华夏公益教科书