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

外观:

外观文件是主题的核心内容, 用于定义页面中服务器控件的外观, 它包含各个控件(如Button, TextBox 或 Calendar控件)的属性设置. 控件外观设置类似于控件标记本身, 但只包含要作为主题的一部分来设置的属性. 例如, 下面的TextBox控件的外观代码:

<asp:TextBox runat="server" BackColor="PowderBlue" ForeColor="RoyalBlue" />

控件外观的设置与控件声明代码类似. 在控件外观设置中只能包含作为主题的属性定义. 上述代码中设置了TextBox控件的前景色和背景色属性. 如果将以上控件外观应用到单个web页面上, 那么页面内所有TextBox控件都将显示所设置的控件外观.

级联样式表:

主题还可以包含级联样式表(.css文件). 将.css文件放在主题目录中时, 样式表自动作为主题的一部分应用. 使用文件扩展名.css在主题文件夹中定义样式表. 主题中可以包含一个或多个级联样式表.

图像和其它资源:

主题还可以包含图像和其它资源, 如脚本文件或视频文件, 通常, 主题的资源文件与该主题的外观文件位于同一个文件夹中. 但也可以在Web应用程序中的其它地方. 例如主题目录下的某个子文件夹中的文件

============================================================================================

文件存储和组织方式

在Web应用程序中, 主题文件必须存储在根目录的App_Themes文件夹下(除全局主题之外), 开发人员可以手动或者使用VS工具创建该文件夹, 创建完成后, 如下图:

外观文件是主题的核心部分, 每个主题文件夹下都可以包含一个或多个外观文件, 如果主题较多, 页面内容复杂时, 外观文件的组织就会出现问题, 此时就需要开发人员在开发过程中, 根据实际情况对外观文件进行有效的管理. 通常根据SkinID. 控件类型  及文件 这三种方式组织:

三种常见的外观文件爱你的组织方式

根据SkinID

在对控件外观设置时, 将具有相同的SkinID放在同一个外观文件中, 这种方式适合网站页面较多, 设置内容复杂的情况

根据控件类型

组织外观文件时, 以控件类型进行分类, 这种方式适用于页面包含控件较少的情况

根据文件

组织外观文件时, 以网站中的页面进行分类, 这种方式适用于网站的网页较少的情况

外观文件分为默认外观和已命名外观两种类型, 如果控件外观没有包含SkinID属性, 那么就是默认外观. 此时, 向页面应用主题, 默认外观自动应用于同一类型的所有控件. 已命名外观是设置了SkinID属性的控件外观, 已命名外观不会自动按类型应用于控件, 而应当通过设置控件的SkinID属性将已命名外观显示应用于控件. 通过创建已命名外观, 可以为应用程序中同一控件的不同实例, 设置不同的外观

创建一个简单的默认外观和命名外观实例:

1. 新建任意一个项目, 添加主题文件夹, 修改默认名称:

2. TextBoxSkin.skin文件代码如下:

TextBox的默认外观—-这行是不能有的, 否则会报错
<asp:TextBox runat="server" Text="文本框外观1" BackColor="#FFE0C0" BorderColor="#FFC080" Font-Size="12pt" ForeColor="#C04000" Width="149px"/>
带有SkinID属性的是命名外观—-这行是不能有的, 否则会报错
<asp:TextBox SkinId="textboxSkin" runat="server" Text="文本框外观2" BackColor="#FFFFC0" BorderColor="Olive" BorderStyle="Dashed" Font-Size="15pt" Width="224px"/>

任何控件的ID属性都不可用在外观文件中出现, 如果向外观文件中添加了不能设置主题的属性, 将会发生错误.

3. Default.aspx调用代码如下:

        <table>
<tr>
<td style="width: 100px">
默认外观:</td>
<td style="width: 247px">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td style="width: 100px">
命名外观:</td>
<td style="width: 247px">
<asp:TextBox ID="TextBox2" runat="server" SkinID ="textboxSkin"> </asp:TextBox></td>
</tr>
</table>

4. 最终效果图:

043. asp.net主题之一初识主题和皮肤的更多相关文章

  1. 044. asp.net主题之二为主题添加CSS样式和动态加载主题

    1. 新建任意一个网站, 默认主页为Default.aspx, 增加一个App_Themes目录, 用于存储主题, 添加一个MyTheme的主题, 在MyTheme主题下添加一个样式表文件, 默认名称 ...

  2. asp.net MVC 切换网站主题

    首先要有一些定义后的CSS文件,本例是用Bootstrap作为前端框架,可以从http://bootswatch.com/网站上下载一些主题文件,也就是一些定义好的Bootstap.css的文件. 然 ...

  3. 2.4、Android Studio使用主题编辑器设计主题

    Android Studio包含一个叫主题编辑器的可视的助手,可以提供以下功能: 1. 创建和更改你的app主题 2. 为不同的资源适应主题 3. 普通的UI颜色更改的实时显示 主题编辑器 这一节描述 ...

  4. [转]WordPress主题开发:主题初始化

    本文转自:http://www.cnblogs.com/tinyphp/p/4391182.html 在最简单的情况下,一个WordPress主题由两个文件构成: index.php -------- ...

  5. WordPress主题开发:主题初始化

    在最简单的情况下,一个WordPress主题由两个文件构成: index.php ------------------主模版 style.css  -------------------主样式表(注意 ...

  6. vue,elementUI切换主题,自定义主题

    本文介绍两种elementUI切换主题色的方法 项目示例:http://test.ofoyou.com/theme/ git代码:记得star哦,谢谢 1:官方提供的方法,直接修改scss文件达到修改 ...

  7. Asp.net主题(theme)和皮肤(skin)的使用

    asp.net 的服务器端控件提供了多种样式的设计,如果对每个控件都单独设置,是比较繁琐的事情,所以微软也提供了针对这些服务器端控件的样式管理,其实也可以通过 css来控制部分服务器端控件的样式,比如 ...

  8. 打印 上一主题 下一主题 利用cURL实现单个文件分多段同时下载,支持断点续传(修订版)

      利用cURL实现单个文件分多段同时下载,支持断点续传(修订版) [复制链接] 摘自 http://bbs.chinaunix.net/thread-917952-1-1.html 在ubuntu下 ...

  9. apollo1.7.1初探(二)使用apollo订阅主题,发布主题消息

    一.MQTT协议配置 为了使用MQTT协议,首先使用MQTT3.1协议的客户端连接到Apollo正在监听端口.Apollo会做协议检测,而且自动识别MQTT连接,而且将连接作为MQTT协议处理. 你不 ...

随机推荐

  1. android开发虚拟机不能正常启动

    点击 window---perspective---DDMS---查看设备状态, 如果显示没有可用设备,则在AVD manager中重 启即可, 若列表中有设备,但显示offline  可采用一下方式 ...

  2. C语言程序设计第5堂作业

    一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出 ...

  3. Javascript的函数自调

    嗯 也不知道怎么翻译self-invoked,就当自调吧. 在看bootstrap的轮播插件源码的时候发现一种新的自调函数的写法(其实应该不新了),开头的一段就卡住了,原谅我是个菜鸟,就顺便记录一下. ...

  4. ios创建自定义控件必须具备的三个方法

    1.当用代码创建控件时调用 -(instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { ...

  5. 将页面上的内容导出到Excel

    <asp:Button ID="lkbExport" runat="server" Name="Save" Text="导出 ...

  6. C# 调用cmd命令行路径中带空格问题

    今天打包winform程序,程序中本身有一处需要调用cmd.exe,打包安装在C:\Program Files目录下,然后调用cmd的地方,就弹出了C:\Program不是内部或外部命令,也不是可运行 ...

  7. wordpress模板学习之导航目录

    wordpress的导航目录分为三个部分,一开启,二配置:三使用 开启在functions.php,这个注册会保存在全局变量中,接下来在菜单配置中会看到 register_nav_menu( 'pri ...

  8. 最新ecshop v2.7.3版本去版权完全版

    该偏文章模板堂搜集总结,包括ecshop前台版权,ecshop后台版权,一个都不留,干干净净,推荐收藏 一.去掉网页标题 Powered by ECShop 打开includes/lib_main.p ...

  9. 百川sdk----自己的WebViewClient不被执行

    我在百川sdk的旺旺群中,追问这个问题N多次,一直没有人答复,哎,凡事都要靠自己..... 1.先查看下百川sdk中,是怎么处理咱们传递过去的 WebViewClient public class l ...

  10. android-文件存储的使用

    Android提供了5种方式存储数据: 1.使用SharedPreferences存储数据: 2.文件存储数据: 3.SQLite数据库存储数据: 4.使用ContentProvider存储数据: 5 ...