ASP.NET 主题(Themes)FAQ

StylesheetTheme 与 Theme区别:

<pages StylesheetTheme="Theme_1"></pages>

StylesheetTheme:App_Themes中全局样式不会覆盖用户在页面控件上的自定义样式。

<pages Theme="Theme_1"></pages>

Theme:App_Themes中全局样式一定会覆盖用户在页面控件上的自定义样式。


1、主题是什么

   主题由一组元素组成:外观、级联样式表 (CSS)、图像和其他资源。主题将至少包含外观。主题是在网站或 Web 服务器上的特殊目录中定义的。主题是一组Web Control的属性设置的集合,提供一种简单的方法设置控件的样式属性。

·         主题只在Web Control中有效

·         母板页(Master Page)上不能设置主题,但是主题可以在内容页面上设置

·         主题上设置的Web Control的样式覆盖页面上设置的样式

·         如果在页面上设置EnableTheming="false",主题无效

·         要在页面中动态设置主题,必须在页面生命周期Page_Preinit事件之前

·         主题包括.skin和.css文件

2、.skin是什么文件

.skin是外观文件,它包含各个控件(例如,Button、Label、TextBox 或 Calendar 控件)的属性设置。控件外观设置类似于控件标记本身,但只包含您要作为主题的一部分来设置的属性。例如,下面是 Button 控件的控件外观:

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

在 theme 文件夹中创建 .skin 文件。一个 .skin 文件可以包含一个或多个控件类型的一个或多个控件外观。可以为每个控件在单独的文件中定义外观,也可以在一个文件中定义所有主题的外观。有两种类型的控件外观 -“默认外观”和“已命名外观”:

·         当向页应用主题时,默认外观自动应用于同一类型的所有控件。如果控件外观没有 SkinID 属性,则是默认外观。例如,如果为 Calendar 控件创建一个默认外观,则该控件外观适用于使用本主题的页面上的所有 Calendar 控件。(默认外观严格按控件类型来匹配,因此 Button 控件外观适用于所有 Button 控件,但不适用于 LinkButton 控件或从 Button 对象派生的控件。)

·         已命名外观是设置了 SkinID 属性的控件外观。已命名外观不会自动按类型应用于控件。而应当通过设置控件的 SkinID 属性将已命名外观显式应用于控件。通过创建已命名外观,可以为应用程序中同一控件的不同实例设置不同的外观。

3、如何为相同控件定义不同的Skin

    使用SkinID为控件定义不同的skin,例如

<asp:Label runat=server Text="ThemedLabel" BackColor="Red" /> -label的缺省外观         

 <asp:Label runat=server SkinId="BoldLabel" Text="ThemedLabel_WithSkinId" BackColor="Blue" Font-Bold="true" /> - 命名为BoldLabel 的Label外观

   因此页面没有指定SkinId的label自动应用缺省外观,Label的SkinID设置为BoldLabel的Label控件应用BoldLabel外观

4、如何组织主题文件内容

   Theme文件下可以包含多个.Skin文件,所以可以多种方式组织你的主题文件,所有的主题文件在应用于页面之前会合并。

·         一个.skin文件包含所有的控件的外观定义

·         每个控件一个.skin文件

·         相同SkinID的控件放在一个.skin文件中

5、有没有办法定义好的Theme文件在多个程序中共享

服务器上的任何网站以及任何网站中的任何页面都可以引用全局主题,使用全局的主题可以在各个应用程序之间共享,例如你想创建一个全局共享的主题theme1。IIS 服务器上的全局主题放置位置类似于 \Inetpub\wwwroot\aspnet_client\system_web\v2.0.xxxxx\Themes\Theme1

应用程序级别的主题会覆盖全局的主题,例如你在应用程序中也定义了Theme1的主题,那么在应用程序级的Theme1主题将覆盖全局的主题Theme1

 

6、StyleSheetTheme是什么

   主题还可以包含级联样式表(.css 文件)。将 .css 文件放在主题目录中时,样式表自动作为主题的一部分应用。使用文件扩展名 .css 在主题文件夹中定义样式表。设置页面的 StyleSheetTheme 属性将主题作为样式表主题来应用。如果您希望能够设置页面上的各个控件的属性,同时仍然对整体外观应用主题,则可以将主题作为样式表主题来应用。EnableTheming="false"情况下StyleSheetTheme仍然有效。通过重写属性StyleSheetTheme来动态修改页面上的主题样式

 public override string StyleSheetTheme
 {
    get{ retrun "MyStyleSheetTheme"; } 
 }

7、主题(Theme/Skin)资源

一组相当不错的Theme,可以直接应用的项目开发中

    Theme预览:http://www.dotnettreats.com/SampleThemes/Default.aspx
    Theme下载:http://www.dotnettreats.com/tools/Default.aspx


限时福利1:原价 129 元,最后2天仅需 69 元!后天涨价至98元 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。 为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了「高性能 MySQL 知识框架图」,帮你梳理学习重点,建议收藏! 【课程设计】 课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。 一、性能优化篇: 主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。 二、MySQL 8.0新特性篇: 主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。 三、高性能架构篇: 主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。 四、面试篇: 程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页