ASP.NET 主题和外观

.NET Framework 4
其他版本

1(共 1)对本文的评价是有帮助 - 评价此主题

主题是属性设置的集合,使用这些设置可以定义页面和控件的外观,然后在某个 Web 应用程中的所有页、

整个 Web 应用程序或服务器上的所有 Web 应用程中一致地应用此外观。

本概述包含以下几节:

  • 主题和控件外观

  • 主题的应用范围

  • 主题设置优先级

  • 可以使用主题来定义的属性

  • 主题与 级联样式表

  • 安全注意事项

  • 相关主题

  • 参考

主题和控件外观

主题由一组元素组成:外观、级联样式表 (CSS)、图像和其他资源。 主题将至少包含外观。 主题是在网站或 Web 服务器上的特殊目录中定义的。

外观

外观文件具有文件扩展名 .skin,它包含各个控件(例如,Button、Label、TextBox 或 Calendar 控件)的属性设置。

控件外观设置类似于控件标记本身,但只包含您要作为主题的一部分来设置的属性。 例如,下面是 Button控件的控件外观:

<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

在主题文件夹中创建 .skin 文件。 一个 .skin 文件可以包含一个或多个控件类型的一个或多个控件外观。 可以为每个控件在单独的文件中定义外观,

也可以在一个文件中定义所有主题的外观。

有两种类型的控件外观 -“默认外观”和“已命名外观”:

  • 当向页应用主题时,默认外观自动应用于同一类型的所有控件。 如果控件外观没有 SkinID 特性,则是默认外观。

  • 例如,如果为 Calendar 控件创建一个默认外观,则该控件外观适用于使用本主题的页面上的所有Calendar 控件。

  • (默认外观严格按控件类型来匹配,因此 Button 控件外观适用于所有 Button 控件,但不适用于 LinkButton 控件或从 Button 对象派生的控件。)

  • 已命名外观是设置了 SkinID 属性的控件外观。 已命名外观不会自动按类型应用于控件。

  • 而应当通过设置控件的 SkinID 属性将已命名外观显式应用于控件。 通过创建已命名外观,可以为应用程序中同一控件的不同实例设置不同的外观。

级联样式表

主题还可以包含级联样式表(.css 文件)。 将 .css 文件放在主题文件夹中时,样式表自动作为主题的一部分加以应用。

使用文件扩展名 .css 在主题文件夹中定义样式表。

主题图形和其他资源

主题还可以包含图形和其他资源,例如脚本文件或声音文件。 例如,页面主题的一部分可能包括 TreeView 控件的外观。

您可以在主题中包括用于表示展开按钮和折叠按钮的图形。

通常,主题的资源文件与该主题的外观文件位于同一个文件夹中,但它们也可以位于 Web 应用程序中的其他地方,

例如,主题文件夹的某个子文件夹中。 若要引用主题文件夹的某个子文件夹中的资源文件,请使用类似于该Image 控件外观中显示的路径:

<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

也可以将资源文件存储在主题文件夹以外的位置。 如果使用波形符 (~) 语法来引用资源文件,Web 应用程序将自动查找相应的图像。

例如,如果您将主题的资源放在应用程序的某个子文件夹中,则可以使用格式为 ~/子文件夹/文件名.ext 的路径来引用这些资源文件,如下面的示例所示。

<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />

返回页首

主题的应用范围

您可以定义单个 Web 应用程序的主题,也可以定义供 Web 服务器上的所有应用程序使用的全局主题。 定义主题之后,可以使用 @ Page 指令的 Theme 或 StyleSheetTheme 特性将该主题放置在各页上;或者通过在应用程序配置文件中设置 <pages> 元素,将该主题应用于应用程序中的所有页。

如果在 Machine.config 文件中定义了 <pages> 元素,主题将应用于服务器上 Web 应用程序中的所有页。

页面主题

页面主题是一个主题文件夹,其中包含控件外观、样式表、图形文件和其他资源,该文件夹是作为网站中的 \App_Themes 文件夹的子文件夹创建的。

每个主题都是 \App_Themes 文件夹的一个不同的子文件夹。 下面的示例演示了一个典型的页面主题,它定义了两个分别名为 BlueTheme 和 PinkTheme 的主题。

MyWebSiteApp_ThemesBlueThemeControls.skinBlueTheme.cssPinkThemeControls.skinPinkTheme.css

全局主题

全局主题是可以应用于服务器上的所有网站的主题。 当您维护同一个服务器上的多个网站时,可以使用全局主题定义域的整体外观。

全局主题与页面主题类似,因为它们都包括属性设置、样式表设置和图形。 但是,全局主题存储在对 Web 服务器具有全局性质的名为 Themes 的文件夹中

。 服务器上的任何网站以及任何网站中的任何页面都可以引用全局主题。

返回页首

主题设置优先级

可以通过指定主题的应用方式来指定主题设置相对于本地控件设置的优先级。

如果设置了页的 Theme 属性,则主题和页中的控件设置将进行合并,以构成控件的最终设置。 如果同时在控件和主题中定义了控件设置,

则主题中的控件设置将重写控件上的任何页设置。 即使页面上的控件已经具有各自的属性设置,此策略也可以使主题在不同的页面上产生一致的外观。

例如,它使您可以将主题应用于在 ASP.NET 的早期版本中创建的页面。

此外,也可以通过设置页面的 StyleSheetTheme 属性将主题作为样式表主题来应用。 在这种情况下,本地页设置优先于主题中定义的设置

(如果两个位置都定义了设置)。 这是级联样式表使用的模型。 如果您希望能够设置页面上的各个控件的属性,同时仍然对整体外观应用主题,

则可以将主题作为样式表主题来应用。

全局主题元素不能由应用程序级主题元素进行部分替换。 如果创建的应用程序级主题的名称与全局主题相同,

应用程序级主题中的主题元素不会重写全局主题元素。

返回页首

可以使用主题来定义的属性

通常,可以使用主题来定义与某个页或控件的外观或静态内容有关的属性。 只能设置那些其 ThemeableAttribute 特性设置为 true(在控件类中)的属性。

显式地指定控件行为而不是指定外观的属性不接受主题值。 例如,不能使用主题来设置 Button 控件的 CommandName 属性。 同样,不能使用主题来设置 GridView 控件的 AllowPaging 属性或 DataSource 属性。

请注意,您不能使用表达式生成器,这些生成器在编译时生成页面中的主题赋值或外观赋值的代码表达式。

返回页首

主题与级联样式表

主题与级联样式表类似,因为主题和样式表均定义一组可以应用于任何页的公共特性。 但是,主题与样式表在下列方面不同:

  • 主题可以定义控件或页的许多属性,而不仅仅是样式属性。 例如,使用主题,可以指定 TreeView 控件的图形、GridView 控件的模板布局,等等。

  • 主题可以包括图形。

  • 主题级联的方式与样式表不同。 默认情况下,页面的 Theme 属性所引用的主题中定义的任何属性值都会重写控件上以声明方式设置的属性值,

  • 除非您使用 StyleSheetTheme 属性显式应用主题。 有关更多信息,请参见上面的“主题设置优先级”部分。

  • 每页只能应用一个主题。 不能向一页应用多个主题,这与样式表不同,样式表可以向一页应用多个样式表。

返回页首

安全注意事项

在网站上使用主题时可能会引发安全问题。 恶意主题可用于:

  • 改变控件的行为,导致它有异于预期行为。

  • 插入客户端脚本,从而导致跨站点式脚本风险。

  • 改变验证。

  • 公开敏感信息。

  • 这些常见威胁的缓解措施有:

  • 使用正确的访问控制设置来保护全局和应用程序主题目录。 应只允许受信任的用户将文件写入主题目录中。

  • 不要使用来自不受信任的源的主题。 若要在网站上使用来自您单位外部的主题,始终都应先检查它是否包含恶意代码。

  • 不要在查询数据中公开主题名称。 恶意用户可以通过此信息来使用开发人员不知道的主题,从而公开敏感信息。

返回页首

相关主题
如何:定义 ASP.NET 页面主题

提供有关如何对页或网站或者全局应用主题的分步说明。

如何:应用 ASP.NET 主题

提供分步说明

如何:禁用 ASP.NET 主题

提供有关如何配置页或控件以忽略主题的分步说明。

如何:以编程方式应用 ASP.NET 主题

提供有关如何以编程方式对页面主题和样式表主题进行设置的分步说明。

演练:创建用户可选择的主题

提供一个分步教程,演示如何创建允许用户选择页面主题的 ASP.NET 页。

ASP.NET 母版页

描述如何为网站中的页创建一致的布局。

ASP.NET Web 服务器控件和 CSS 样式

描述如何在 ASP.NET 网页中使用 CSS 样式。

ASP.NET 网页

提供指向有关创建 ASP.NET 网页的主题的链接。

如何:定义 ASP.NET 页面主题

.NET Framework 4
其他版本

0(共 1)对本文的评价是有帮助 - 评价此主题

在 Visual Web Developer 中,您可以定义一些页主题,然后可以将这些页主题应用于应用程序的一个或多个页。 您也可以创建计算机级的主题,

主题由多个支持文件组成,包括页外观样式表、定义服务器控件外观的控件外观,以及构成主题的任何其他支持图像或文件。

通过使用 Theme 或 @ Page 指令的 StyleSheetTheme 特性,或者通过在应用程序配置文件中设置 pages 元素(ASP.NET 设置架构) 元素,

创建页主题

  1. 在解决方案资源管理器中,右击要为其创建页主题的网站名称,然后单击“添加 ASP.NET 文件夹”。

  2. 单击“主题”。

    如果 App_Themes 文件夹不存在,Visual Web Developer 则会创建该文件夹。 Visual Web Developer 即为主题创建一个新文件夹,作为 App_Themes 文件夹的子文件夹。

  3. 键入新文件夹的名称。

    此文件夹的名称也是页主题的名称。 例如,如果您创建一个名为 \App_Themes\FirstTheme 的文件夹,则主题的名称为 FirstTheme。

  4. 将构成主题的控件外观、样式表和图像的文件添加到新文件夹中。

将外观文件和外观添加到页主题

  1. 在解决方案资源管理器中,右击主题的名称,然后单击“添加新项”。

  2. 在“添加新项”对话框中,单击“外观文件”。

  3. 在“名称”框中,键入 .skin 文件的名称,然后单击“添加”。

    通常的做法是为每个控件创建一个 .skin 文件,如 Button.skin 或 Calendar.skin。 但是,您也可以根据需要创建任意数量的 .skin 文件。

  4. 在 .skin 文件中,使用声明性语法添加标准控件定义,但仅包含要为主题设置的属性。 控件定义必须包含 runat="server" 特性,必须不包含 ID="" 特性。

    下面的代码示例演示 Button 控件的默认控件外观,其中定义了主题中所有 Button 控件的颜色和字体。

    <asp:Button runat="server" BackColor="Red" ForeColor="White" Font-Name="Arial" Font-Size="9px" />
    

    此 Button 控件外观不包含 skinID 特性。 它将应用于使用主题的应用程序中所有未指定 skinID 特性的 Button 控件。

    注意

    创建控件外观的简单方法是将控件添加到页,并对其进行配置,使其具有您想要的外观。

    例如,您可以将一个 Calendar 控件添加到页,并设置其日标题、选定的日期和其他属性。

    然后,您可以将控件定义从页中复制到外观文件,但必须移除 ID 特性。

  5. 对您想创建的每个控件外观文件重复步骤 2 和 3。

    注意

    每个控件只能定义一个默认外观。 使用外观的控件声明中的 SkinID 特性为相同类型的控件创建命名外观。

将级联样式表文件添加到页主题

  1. 在解决方案资源管理器中,右击主题的名称,然后单击“添加新项”。

  2. 在“添加新项”对话框中,单击“样式表”。

  3. 在“名称”框中,键入 .css 文件的名称,然后单击“添加”。

    当主题应用于页时,ASP.NET 向页的 head 元素添加对样式表的引用。 有关更多信息,请参见 如何:应用 ASP.NET 主题

创建全局主题

全局主题应用于服务器上的所有网站。 创建全局主题文件夹的位置取决于您是使用 Internet 信息服务 (IIS) 运行网站还是

注意

如果您使用文件系统网站,则默认情况下,Visual Web Developer 启动 ASP.NET 开发服务器来运行网站进行测试。

对于其他类型的网站,Visual Web Developer 在 IIS 中运行页进行测试。

创建全局主题

  1. 使用下面的路径创建 Themes 文件夹。

    %windows%\Microsoft.NET\Framework\version\ASP.NETClientFiles\Themes
    

    注意

    全局主题的文件夹名称为 Themes,而不是 App_Themes,因为后者用于页主题。

    创建 Themes 文件夹的子文件夹以保存全局主题文件。

    子文件夹的名称即是主题的名称。 例如,如果您创建一个名为 \Themes\FirstTheme 的文件夹,则主题的名称为 FirstTheme。

  2. 将构成全局主题的控件外观、样式表和图像的文件添加到新文件夹中。

    注意

    在定义全局主题时,不能使用 Visual Web Developer 直接将外观和样式表文件添加到全局主题中。

    您可能会发现一种更简单的方式,

    即将主题作为页主题进行定义和测试,然后将其复制到 Web 服务器上用于全局主题的文件夹中。

  3. 如果网站是要使用 ASP.NET 开发服务器测试的文件系统网站,则可以立即对主题进行测试。

  4. 如果要使用本地 IIS 网站测试网站,则打开命令窗口,然后运行 aspnet_regiis -c 在运行 IIS 的服务器上安装主题。

  5. 如果要在远程网站或 FTP 网站上测试主题,则必须使用下面的路径手动创建 Themes 文件夹。

    IISRootWeb\aspnet_client\system_web\version\Themes

都可以应用主题。 Visual Web Developer 只以可视方式显示使用StyleSheetTheme 特性应用的主题。

使用 ASP.NET 开发服务器测试网站。

无论主题是定义为页主题还是全局主题,主题的内容都是相同的。

这种主题可用在服务器上的多个应用程序中。

如何:应用 ASP.NET 主题

.NET Framework 4
其他版本

此主题尚未评级 - 评价此主题

您可以对页或网站应用主题,或对全局应用主题。 在网站级设置主题会对站点上的所有页和控件应用样式和外观,除非对个别页重写主题。

默认情况下,主题重写本地控件设置。 或者,您可以设置一个主题作为样式表主题,以便该主题将仅应用于未在控件上显式设置的控件设置。

对网站应用主题

  1. 在应用程序的 Web.config 文件中,将 <pages> 元素设置为全局主题或页面主题的主题名称,如下面的示例所示:

    <configuration><system.web><pages theme="ThemeName" /></system.web>
    </configuration>
    

    注意

    如果应用程序主题与全局应用程序主题同名,则页面主题优先。

  2. 要将主题设置为样式表主题并作为本地控件设置的从属设置,应改为设置 styleSheetTheme 特性:

    <configuration><system.web><pages styleSheetTheme="Themename" /></system.web>
    </configuration>
    

Web.config 文件中的主题设置会应用于该应用程序中的所有 ASP.NET 网页。 Web.config 文件中的主题设置遵循常规的配置层次结构约定。

对单个页应用主题

  • 将 @ Page 指令的 Theme 或 StyleSheetTheme 特性设置为要使用的主题的名称,如下面的示例所示:

    <%@ Page Theme="ThemeName" %>
    <%@ Page StyleSheetTheme="ThemeName" %>
    

    现在,该主题及其对应的样式和外观仅应用于声明它的页。

对控件应用外观

主题中定义的外观应用于已应用该主题的应用程序或页中的所有控件实例。 在某些情况下,您可能希望对单个控件应用一组特定属性。

对控件应用命名外观

  • 设置控件的 SkinID 属性,如下面的示例所示:

    <asp:Calendar runat="server" ID="DatePicker" SkinID="SmallCalendar" />
    

    如果页面主题不包括与 SkinID 属性匹配的控件外观,则控件使用该控件类型的默认外观。

例如,要仅对一部分页应用某主题,可以将这些页与它们自己的 Web.config 文件放在一个文件夹中,或者在根 Web.config 文件中创建一个 <location> 元素以指定文件夹。 有关详细信息,请参见 配置特定文件和子目录。

这可以通过创建命名外观(.skin 文件中设置了 SkinID 属性的一项),然后按 ID 将它应用于各个控件来实现。

在页面级设置主题会对该页及其所有控件应用样式和外观。

学习笔记--asp.net主题和外观(转自msdn,仅为自己学习存储和有意读者使用)相关推荐

  1. [摘自MSDN] ASP.Net2.0学习 [2] 主题 1 :ASP.NET 主题和外观概述

    ASP.NET 主题和外观概述 主题是属性设置的集合,使用这些设置可以定义页面和控件的外观,然后在某个 Web 应用程中的所有页.整个 Web 应用程序或服务器上的所有 Web 应用程中一致地应用此外 ...

  2. 学习笔记--asp.net母版页(转自msdn,仅为自己学习存储和有意读者使用)

    ASP.NET 母版页 .NET Framework 4 其他版本 12(共 15)对本文的评价是有帮助 - 评价此主题 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局. 单个母版页可 ...

  3. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  4. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  5. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  6. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  7. 【PM学习笔记】酸梅干超人 - 零基础学B端UI设计 学习笔记

    学习笔记目录 0 先导片 1.1 B端是什么?和C端有什么区别? 1.2 完整走一遍B端项目流程 1.3 B端产品经理介绍 PM都在做什么? 0 先导片 B端业务类型 举例:云服务.智慧系统.数据BI ...

  8. 学习笔记--asp.net页生命周期(转自msdn,仅为自己学习存储和有意读者使用)

    ASP.NET 页生命周期概述 .NET Framework 4 其他版本 28(共 30)对本文的评价是有帮助 - 评价此主题 更新:2011 年 5 月 ASP.NET 页运行时,此页将经历一个生 ...

  9. 【学习笔记asp.net】WebService创建、发布及在IIS上部署

    本系列主要记录我在工作中遇到问题时,查阅收集到的各类博主的解决方案.新手主要做的是记录学习实践,并不做其它评价.涉及到版权问题的,请博主联系删除. 最近做的mvc项目需要在两个内外网项目之间再加一个w ...

最新文章

  1. MFC中快速应用OpenCV(转)
  2. file invalid or corrupt. -vs2010
  3. 【NLP】利用维基百科促进自然语言处理
  4. 视角不平衡立体匹配研究
  5. 整数阶贝塞尔函数c语言,整数阶复宗量变形贝塞尔函数的计算.pdf
  6. Mac查看本机ip地址
  7. 文本数据增强+NER
  8. thinkphp3.2.3版本的数据库增删改查实例
  9. java面向对象的理解_java胜于C语言,却又静态面向对象,简单?
  10. 永不改变的PCB设计黄金法则
  11. 凭证反过账 金蝶k3_建议收藏!金蝶快捷键操作大全!
  12. {ubuntu}乱七八糟重命名为1 2 3.....png
  13. C语言(郝斌)内容整理
  14. Couldn‘t find executable named person_subscriber below /home/yue/catkin_ws/src/... 找不到可执行文件的原因
  15. Leetcode 318. Maximum Product of Word Lengths
  16. 一次 TLS SNI 问题
  17. 【Flink】搭建单机环境
  18. 如何通过网页的超连接,显示qq聊天对话框
  19. 河南省测绘资质单位大全
  20. XML文件的一些操作

热门文章

  1. 宇视摄像头ip搜索软件下载_搜索资源?下载资源?一款软件就给你安排的妥妥的...
  2. 2017.9.18 calc 失败总结
  3. 华为公布鸿蒙2.0内测清单,华为鸿蒙操作系统2.0版支持的设备清单流出,荣耀30s...
  4. java lambda map用法_Java 中如何使用 lambda 表达式填充 Map?
  5. Unity Shader:雾的数学运算以及在Unity中使用Fog
  6. 扫地机器人的特点描写_扫地机器人的特点是什么
  7. c 语言 pthread_create_哪种编程语言又快又省电?有人对比了27种语言
  8. UE4如何解析命令行参数
  9. 《OpenGL编程指南(原书第8版)》——计算着色器
  10. 总结Django一些开发经验