net中使用母版页

2024-05-29 16:58
文章标签 使用 net 母版

本文主要是介绍net中使用母版页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

.net中使用母版页的优点

母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码、文本和控件元素;使用框架集;对通用元素使用包含文件;使用 ASP.NET 用户控件等。母版页具有下面的优点:

  • 使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。

  • 使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。

  • 通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。

  • 版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。

    在运行时,母版页是按照下面的步骤处理的:

    用户通过键入内容页的 URL 来请求某页。

  1. 获取该页后,读取 @ Page 指令。如果该指令引用一个母版页,则也读取该母版页。如果这是第一次请求这两个页,则两个页都要进行编译。

  2. 包含更新的内容的母版页合并到内容页的控件树中。

  3. 各个 Content 控件的内容合并到母版页中相应的 ContentPlaceHolder 控件中。

  4. 浏览器中呈现得到的合并页。

下面的关系图对此过程进行了阐释。

运行时的母版页

MasterPagesMerge 图

从用户的角度来看,合并的主控和内容页是一个单独而离散的页。该页的 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中使用母版页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014111

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.