本文主要是介绍net中使用母版页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
.net中使用母版页的优点
母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码、文本和控件元素;使用框架集;对通用元素使用包含文件;使用 ASP.NET 用户控件等。母版页具有下面的优点:
-
使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。
-
使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。
-
通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。
-
版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。
在运行时,母版页是按照下面的步骤处理的:
用户通过键入内容页的 URL 来请求某页。
-
获取该页后,读取 @ Page 指令。如果该指令引用一个母版页,则也读取该母版页。如果这是第一次请求这两个页,则两个页都要进行编译。
-
包含更新的内容的母版页合并到内容页的控件树中。
-
各个 Content 控件的内容合并到母版页中相应的 ContentPlaceHolder 控件中。
-
浏览器中呈现得到的合并页。
下面的关系图对此过程进行了阐释。
运行时的母版页
从用户的角度来看,合并的主控和内容页是一个单独而离散的页。该页的 URL 是内容页的 URL。
从编程的角度来看,这两个页用作其各自控件的独立容器。内容页用作母版页的容器。但是,在内容页中可以从代码中引用公共母版页成员(如下一节中所述)。
注意,母版页成为了内容页的一部分。实际上,母版页与用户控件的作用方式大致相同 -- 作为内容页的一个子级并作为该页中的一个容器。但是在这种情况下,母版页是所有呈现到浏览器中的服务器控件的容器。合并的主控和内容页的控件树看起来类似于下面这样:
PageMaster Page(Master page markup and controls)ContentPlaceHolderContent page markup and server controls(Master page markup and controls)ContentPlaceHolderContent page markup and server controls(Master page markup and controls)
此关系图是简化的;如果内容页不具有相应的 Content 控件,母版页也可能在 ContentPlaceHolder 控件中具有标记和控件。
一般说来,此结构对如何构造页或编写页的程序无任何影响。但是在某些情况下,如果在母版页上设置一个页范围的属性,则该属性可能会影响内容页的行为,这是因为母版页是页上控件的最近的父级。例如,如果在内容页上将 EnableViewState 属性设置为 true,而在母版页中将相同的属性设置为 false,实际上会禁用视图状态,因为母版页上的设置具有优先权。
当请求某个内容页时,其内容与母版页合并,并且该页在内容页的上下文中运行。例如,如果获取 HttpRequest 对象的 CurrentExecutionFilePath 属性,则无论是在内容页代码还是母版页代码中,路径都表示内容页的位置。
母版页和内容页不必位于同一文件夹中。只要内容页的 @ Page 指令中的 MasterPageFile 特性解析为一个 .master 页,ASP.NET 就可以将内容页和母版页合并为一个单独的已呈现的页。
引用外部资源
内容页和母版页都可以包含引用外部资源的控件和元素。例如,两者都可以包含引用图像文件的图像控件,或包含引用其他页的定位点。
合并的内容和母版页的上下文是内容页的上下文。这会影响在定位点上指定资源(如图像文件和目标页)的 URL 的方式。
服务器控件
在母版页上的服务器控件中,ASP.NET 动态修改引用外部资源的属性的 URL。例如,可以将一个 Image 控件放置于一个母版页上并将其 ImageUrl 属性设置为相对于母版页。在运行时,ASP.NET 会修改 URL 以便其在内容页的上下文中正确解析。
ASP.NET 会在下面的情况下修改 URL:
-
URL 为某个 ASP.NET 服务器控件的属性。
-
该属性在该控件中内部标记为一个 URL。(该属性用特性 UrlPropertyAttribute 来标记。)在实际情况中,采用这种方式标记通常用于引用外部资源的 ASP.NET 服务器控件属性。
其他元素
ASP.NET 无法修改不是服务器控件的元素上的 URL。例如,如果在母版页上使用一个 img 元素并将其 src 特性设置为一个 URL,则 ASP.NET 不会修改该 URL。在这种情况下,URL 会在内容页的上下文中进行解析并创建相应的 URL。
一般说来,在母版页上使用元素时,建议您使用服务器控件,即使是对不需要服务器代码的元素也是如此。例如,不使用 img 元素,而使用 Image 服务器控件。这样,ASP.NET 就可以正确解析 URL,而且您可以避免移动母版页或内容页时可能引发的维护问题。
有关指定 ASP.NET 服务器控件的路径的更多信息,请参见 ASP.NET Web 项目路径。
不能直接将 ASP.NET 主题应用于母版页。如果向 @ Master 指令添加一个主题特性,则页在运行时会引发错误。
但是,主题在下面这些情况中会应用于母版页:
-
如果主题是在内容页中定义的。母版页在内容页的上下文中解析,因此内容页的主题也会应用于母版页。
-
如果通过在 pages 元素(ASP.NET 设置架构) 元素中包含主题定义来将整个站点配置为使用主题。
页级 可以在每个内容页中使用页指令来将内容页绑定到一个母版页,如下面的代码示例中所示。
- VB
<%@ Page Language="VB" MasterPageFile="MySite.Master" %>
C#<%@ Page Language="C#" MasterPageFile="MySite.Master" %>
-
应用程序级 通过在应用程序的配置文件 (Web.config) 的 pages 元素中进行设置,可以指定应用程序中的所有 ASP.NET 页(.aspx 文件)都自动绑定到一个母版页。该元素可能看起来类似于下面这样。
<pages masterPageFile="MySite.Master" />
如果使用此策略,则应用程序中的所有具有 Content 控件的 ASP.NET 页都与指定的母版页合并。(如果某个 ASP.NET 页不包含 Content 控件,则不应用该母版页。)
-
文件夹级 此策略类似于应用程序级的绑定,不同的是只需在一个文件夹中的一个 Web.config 文件中进行设置。然后母版页绑定会应用于该文件夹中的 ASP.NE
这篇关于net中使用母版页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!