一、简介:
关于主题文件的创建,请参看本博客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";
}
分享到:
相关推荐
在.NET开发中,CSS(层叠样式表)和Skin文件是构建用户界面的重要元素,特别是在ASP.NET框架下。Skin文件允许我们为控件定义统一的外观和行为,而动态加载皮肤则是提高应用灵活性和用户体验的关键技术。下面我们将...
主题和外观的结合使用,可以轻松地改变ASP.NET应用程序的外观,使其符合公司的品牌形象或者满足不同用户群体的审美需求。 总结,这个课件涵盖了ASP.NET开发中至关重要的两部分:数据绑定和界面设计。通过学习数据...
在ASP.NET中,每个主题都包含一个或多个皮肤(Skin)文件,这些文件定义了控件的特定样式。当应用主题时,所有页面上的相应控件都会自动采用这些样式,从而实现了页面的统一外观。 在"App_Themes"目录下,你可以...
在ASP.NET中,"皮肤"(Skin)是一种强大的功能,它允许开发者定义控件的一组默认属性,这些属性可以应用于整个应用程序或特定的Web页面。皮肤文件通常以.skin为扩展名,它们定义了某一类控件(如按钮、文本框等)的...
虽然皮肤本身提供了样式设置,但ASP.NET也支持使用CSS进行更精细的样式控制。皮肤和CSS可以结合使用,皮肤可以作为基础样式,而CSS用于调整细节或覆盖皮肤设置。 **注意事项:** 1. **避免过度使用皮肤**:过多的...
主题是ASP.NET中用于统一和定制Web应用程序外观的一种强大工具,它们允许开发者轻松地改变整个网站或应用程序的界面样式,而无需修改每个页面的HTML或CSS代码。 主题主要由一系列皮肤(Skin)文件、CSS样式表、图像...
在ASP.NET中,皮肤文件通常以.skin为扩展名,它们存储在主题目录下,并与控件ID关联。例如,一个Button控件的皮肤文件可能会定义按钮的大小、颜色、边框等样式。主题目录通常位于项目的App_Themes目录下,每个主题都...
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属性...
* 主题可以包含多个文件,如 skin 文件、CSS 文件、图片文件等。 * 母版页文件的扩展名是 .master。 六、其他 * ValidationSummary 控件用于集中显示所有的验证结果。 * CompareValidator 控件用于比较输入的数据...
在ASP.NET中,皮肤(Skin)和主题(Theme)以及模板页(Master Page)是用于实现页面样式和布局复用的重要机制,极大地提高了开发效率和用户体验的一致性。 首先,我们来详细了解一下**皮肤(Skin)**。皮肤是一种...
在ASP.NET中,主题(Themes)和皮肤(Skin)是两个重要的概念,它们用于实现页面的外观和感觉的统一管理。下面我们将详细探讨这两种特性及其使用方法。 首先,**主题** 是一种可以应用于整个ASP.NET应用程序或者...
ASP.NET主题是一组定义了控件样式、布局和色彩的文件集合,主要包括CSS(层叠样式表)文件、图片文件以及皮肤文件(.skin)。通过应用主题,可以统一网站的整体风格,而无需为每个控件单独设置样式,大大提高了开发...
在ASP.NET中,皮肤(Skin)是一种强大的用户界面(UI)主题机制,允许开发者快速地改变应用程序的外观和感觉,以适应不同的品牌或用户需求。皮肤通常包括样式表(CSS)和图像文件,定义了控件的视觉样式。 标题...
2. **定义皮肤文件**:在Calendar.skin文件中,我们可以为ASP.NET日历控件设置默认属性,如Font、ForeColor、BackStyle等。例如: ``` <asp:Calendar ID="Calendar1" runat="server" Font-Names="Arial" Font-Size...
该"asp.net主题资源包(1)"可能包含了多种预设的界面样式,这些样式通常由CSS(层叠样式表)文件组成,它们定义了网页元素的颜色、字体、布局等视觉特性。开发者可以根据自己的需求选择或自定义主题,为不同的页面或...
压缩包内的"CodefanDll"可能是包含编译后的类库文件,这些类库可能扩展了ASP.NET的基础日历控件,提供了额外的功能或自定义的行为。开发者可以通过引用这个DLL,然后在代码中实例化自定义的控件类,从而在项目中使用...
4. **主题(Themes)**和皮肤(Skin):ASP.NET 2.0提供了主题和皮肤功能,允许开发者快速改变网站的外观和感觉,无需修改每个单独页面的CSS。 5. **状态管理**:包括ViewState、Session、Cookie等,用于在页面间...
在第5章“ASP.NET主题、母版页和站点导航”中,作者孙士保深入讲解了如何利用ASP.NET进行界面设计和用户体验优化。 **ASP.NET主题和外观** 主题是ASP.NET中实现页面一致性外观的关键机制。它们是一组预定义的属性...
除了使用ASP.NET控件外,还可以通过普通的HTML元素来触发日期选择器。例如: ```html ()" /> ``` 在这个例子中,通过给`input`元素添加`onClick`属性并调用`WdatePicker()`方法,当用户点击该输入框时会弹出日期...
皮肤通常包含CSS样式、图片和其他相关的资源文件,它们被应用到ASP.NET的服务器控件上,以控制这些控件在页面上的显示。 此后台免费模板可能包含以下组件和特性: 1. **预设皮肤**:模板中可能提供了几种预设的...