`
bulote
  • 浏览: 1306256 次
文章分类
社区版块
存档分类
最新评论

asp.net主题文件(css+.skin)的使用

 
阅读更多
一、简介:
关于主题文件的创建,请参看本博客http://blog.sina.com.cn/s/blog_67aaf4440100nl5k.html
  利用Themes我们可以很容易的更改控件、页面的风格,而不需要修改我们的代码和页面文件。Themes文件被单独的放在1个App_Themes文件夹下面,与你的程序是完全分开的。
  
二、怎么使用Themes和Skins:
  先看个非常简单的实例:
App_Themes\default\1.skin文件代码:
<asp:Label Font-Bold="true" ForeColor="Red" runat="server" />
  
default.aspx:文件代码:
<%@ Page Language="C#" Theme="default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Page with Example Theme Applied</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
<asp:Label ID="Label2" runat="server" Text="Hello 2" /><br />
</form>
</body>
</html>


  可以看到我们在default.aspx并没有写如何的控制style的代码,但运行取发现label上的字都变成了粗体红色了,这就是1个最基本的theme例子。
  
App_Themes文件夹:
  App_Themes文件夹位于程序的根目录下,App_Themes下必须是Theme名称的子文件夹,子文件夹中可以包含多个.skin和.css文件。下图中建立2个Theme,名称分别为default和default2:

  使用themes
  
1、在1个页面中应用Theme:
  如果想在某1个页面中应用Theme,直接在aspx文件中修改<%@ Page Theme="..." %>,比如你想这个页面应用default2 theme,设置<%@ Page Theme="default2" %>就OK
  
2、在所有页面应用同1个Theme:
  如果要在所有页面上使用相同的Theme,在web.config中的<system.web>节点下加上句<pages theme="..."/>
  
3、让控件不应用Theme:
  第1个例子中我们看到了2个Label的风格都变了,就是说.skin文件中的风格在页面上所有Label都起作用了。但有时我们希望某1个Label不应用.skin中的风格,这时你只需设置Label的EnableTheming属性为false的时候就可以了。
也许你还想不同的label显示不同的风格,你只需设置label的SkinID属性就可以,见下面的实例:

App_Themes\default\1.skin
<asp:label runat="server" font-bold="true" forecolor="Red" />
<asp:label runat="server" SkinID="Blue" font-bold="true" forecolor="blue" />

deafult.aspx
<%@ Page Language="C#" Theme="default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Page with Example Theme Applied</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label2" runat="server" Text="Hello 2" SkinID="Blue" /><br />
<asp:Label ID="Label3" runat="server" Text="Hello 3" /><br />
</form>
</body>
</html>
  运行后就会发现2个label显示的风格不一样了。
  
4、其他方法:
  前面已经说了在aspx文件头使用 <%@ Page Theme="..." %>来使用theme,而用这个方法应用theme中的风格将会覆盖你写在aspx中的控件属性style。比如:
  
App_Themes\default\1.skin
<asp:Label Font-Bold="true" ForeColor="Red" runat="server" />
  
default.aspx
<%@ Page Language="C#" Theme="default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
<asp:Label ID="Label2" runat="server" Text="Hello 2" ForeColor="blue" />
</form>
</body>
</html>
  运行结果,所有的label的forecolor都为red。
  
而使用<%@ Page StyleSheetTheme="..." %>应用theme就不会覆盖你在aspx文件中写的属性style:
  控件应用style属性的顺序如下:
  a、StyleSheetTheme引用的风格
  b、代码设定的控件属性(覆盖StyleSheetTheme)
  c、Theme引用的风格(覆盖前面2个)
  
theme中包含CSS:
  theme中也可以使用.css文件,当你把.css文件放在1个theme目录下后,在用到了这个theme的页面中自动会应用你的.css的
  
三、后台代码轻松为网站换府肤
  前面讲的都是在aspx文件或web.config中应用theme,而在blog这样的每个用户都有不同的skin的网站中用上面的方法来实现换skin显然是不方便的。
  下面就介绍怎么在后台代码中动态的引用theme来解决上面的情况,theme必须在page被请求的最早期就应用上,所以我们必须在Page_PreInit事件中写代码,代码很简单,就1句:
Page.Theme = "...";
  这里我们只要从数据库中去读取每个用户设置的不同theme名就可以轻松实现每个用户都有不同的skin了。

在哪里添加Page_PreInit事件?

一.在页面的cs类当中写 override vs会智能提示重写OnPreInit
C# code
protected override void OnPreInit(EventArgs e)
{
this.Page.Theme = "blue";
}

二.手动写入代码
protected override void OnPreInit(EventArgs e)
{
this.Page.Theme = "blue";
}
分享到:
评论

相关推荐

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    9.1 使用ASP.NET 2.0中的主题 253 9.1.1 给单个ASP.NET页面应用主题 253 9.1.2 把主题应用于整个应用程序 255 9.1.3 删除服务器控件中的主题 255 9.1.4 删除Web页面上的主题特性 256 9.1.5 StyleSheetTheme属性...

    ASP.NET的网页代码模型及生命周期

    在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,ASP.NET网站的网页元素包含可视元素和页面逻辑元素,并不包含designer.cs文件。而ASP.NET应用程序包含designer.cs文件。创建ASP.NET网站,首先需要创建网站,...

    LevenBlog2.0(Asp.Net Mvc开发)源码

    使用了Asp.Net MVC框架,该框架可以更好的分离代码和UI部分,使得本系统的skin功能强大. 采用webform引擎的可更换模板系统,webform引擎为asp.net自带的view引擎,是一个编译型的view引擎,因此可以获得更高的效率和更...

    ASP.NET2.0高级编程(第4版)1/6

     18.6.2 使用文件扩展名641  18.6.3 使用新的  ASP.NET MMC插件643 18.7 小结644 第19章 状态管理645 19.1 如何选择645 19.2 ASP.NET 2.0中的  Session对象648  19.2.1 会话和事件模型648  19.2.2 配置会话...

    ASP.Net皮肤换肤控件

    4、功能强大灵活、使用方便、可定制性强: AspNetPager分页控件的所有导航元素都可以由用户进行单独控制,从6.0版起,AspNetPager支持使用主题(Theme)与皮肤(Skin)统一控件的整体样式,配合asp.net 2.0中的...

    非凡建站系统.NET版 v2.0.rar

    使用了Asp.Net MVC框架,该框架可以更好的分离代码和UI部分,使得本系统的skin功能强大。 采用webform引擎的可更换模板系统,webform引擎为Asp.Net自带的view引擎,是一个编译型的view引擎,因此可以获得更高的...

    ASP.NET 2.0快速入门 下载列表 微软

    ASP.NET 2.0快速入门(4):ASP.NET 2.0 Master Page主题以及皮肤的使用 本课程介绍asp.NET 2.0的几个设计方面的新特性,通过master page听众可以使诸多网页遵循同一个架构,theme和skin使网页保持统一外观并使网页...

    非常好用的asp.net日期时间控件

    当WdatePicker.js里的属性:$wdate=true时,在input里加上class="Wdate"就会在选择框右边出现日期图标,如果您不喜欢这个样式,可以把class="Wdate"去掉,另外也可以通过修改skin目录下的WdatePicker.css文件来修改样式

    .net版的在线编辑器FCkEditorDemo.rar

    CUTEEDITOR当然是无可非议的老大,可是昂贵的许可费用不说,且只能用于ASP.NET FREETEXTBOX功能比较少,而且兼容性不好 类似RICHTEXTBOX这种东东简直是鸡肋,几乎没什么价值(我以前也写过一个,后来用上FCKEDITOR后...

    ASP.NET 2.0快速入门(4)

    ASP.NET 2.0 Master Page主题以及皮肤的使用 (Level 200) 讲 师:苏鹏 中国网通技术支持与项目部开发经理 MSDN特邀讲师 课程简介:本课程介绍asp.NET 2.0的几个设计方面的新特性,通过master page听众...

    ASP.NET 主题的简单配置教程

    那么主题的定义会覆盖控件的属性,当然这个也可以修改) 主题里面的控件不能定义ID 简单实例 1、网站—添加新项—外观文件(后缀名为.skin)–选择 “是” 会创建一个App_Themes\skinName(你的主题名称的文件夹) ...

    ASP.NET 2.0快速入门(4)_ASP.NET 2.0 Master Page主题以及皮肤的使用_QA

    本课程介绍asp.NET 2.0的几个设计方面的新特性,通过master page听众可以使诸多网页遵循同一个架构,theme和skin使网页保持统一外观并使网页风格统一化。主要针对网页的美工以及网页风格管理人员。要求听众有一定...

    ASP.NET 2.0快速入门(4)_ASP.NET 2.0 Master Page主题以及皮肤的使用_PDF

    本课程介绍asp.NET 2.0的几个设计方面的新特性,通过master page听众可以使诸多网页遵循同一个架构,theme和skin使网页保持统一外观并使网页风格统一化。主要针对网页的美工以及网页风格管理人员。要求听众有一定...

    ASP.NET 2.0快速入门(4)_ASP.NET 2.0 Master Page主题以及皮肤的使用_Demo

    本课程介绍asp.NET 2.0的几个设计方面的新特性,通过master page听众可以使诸多网页遵循同一个架构,theme和skin使网页保持统一外观并使网页风格统一化。主要针对网页的美工以及网页风格管理人员。要求听众有一定...

    一套不错的.Net非凡建站系统

    使用了Asp.Net MVC框架,该框架可以更好的分离代码和UI部分,使得本系统的skin功能强大。 采用webform引擎的可更换模板系统,webform引擎为Asp.Net自带的view引擎,是一个编译型的view引擎,因此可以获得更高的效率...

    Asp.net 网络硬盘

    │ 必读:程序使用说明.doc │ ├─App_Code │ WebHard.cs │ ├─App_Data │ db_MRHard.mdf │ db_MRHard_log.LDF │ ├─App_Themes │ └─MRSOFTASPNET │ web.skin │ ├─File │ └─mr ├─Images │ ...

    Telerik 2014 Q3 SP1 for asp.net ajax Source源代码

    Telerik 2014 Q3 SP1 for asp.net ajax Source源代码版,有完整的项目文件、SKIN和CSS等文件

    Asp.net 博客

    │ 必读:程序使用说明.doc │ ├─App_Code │ AssemblyInfo.cs │ ItemOperation.cs │ SqlData.cs │ UserInfo.cs │ User_picture.cs │ ├─App_Data │ db_Blog_Data.MDF │ db_Blog_Log.LDF │ ├─aspnet...

    ext-2.3.0+CKEditor 3.0.1+ckfinder_asp_1.4配置详解及工程源码

    ext-2.3.0+CKEditor 3.0.1+ckfinder_asp_1.4配置详解 一、去http://cksource.com/下载这两个东西 二、去http://www.extjs.com/下载ext-2.3.0 三、将ext-2.3.0、CKEditor 3.0.1、ckfinder_asp_1.4,取出解压后的...

Global site tag (gtag.js) - Google Analytics