[摘自MSDN] ASP.Net2.0学习 [2] 主题 2 :演练:在 Visual Studio 中使用主题自定义网站
2007-09-29 22:18
561 查看
Visual Web Developer
演练:在 Visual Studio 中使用主题自定义网站
此演练演示如何使用主题为网站中的页和控件应用一致的外观。主题可以包括定义单个控件的常用外观的外观文件、一个或多个样式表和用于控件(如 TreeView 控件)的常用图形。此演练演示如何在网站中使用 ASP.NET 主题。
本演练中阐释的任务包括:
将预定义的 ASP.NET 主题应用于单个页和整个站点。
创建您自己的包括外观的主题,这些外观用于定义单个控件的外观。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl08947c9c8,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl08img,";
先决条件
若要完成本演练,您需要:
Microsoft Visual Web Developer (Visual Studio)。
.NET Framework。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl097bc1267,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl09img,";
创建网站
如果已经在 Visual Web Developer 中创建了一个网站(例如,按照演练:在 Visual Web Developer 中创建基本网页中的步骤),则可以使用该网站而转到下一节。否则,按照下面的步骤创建一个新的网站和网页。
在“文件”菜单上单击“新建网站”。
出现“新建网站”对话框。
在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。
在“位置”框中输入要保存网站页面的文件夹的名称。
例如,键入文件夹名“C:\WebSites”。
在“语言”列表中,单击您想使用的编程语言。
单击“确定”。
Visual Web Developer 创建该文件夹和一个名为 Default.aspx 的新页。
若要在此演练中开始使用主题,请设置一个 Button 控件、一个 Calendar 控件和一个 Label 控件,以便了解主题是如何影响这些控件的。
从“工具箱”的“标准”组中将“日历”控件、“按钮”控件和“标签”控件拖到页上。页的具体布局无关紧要。
切换到“源”视图。
确保页的 <head> 元素具有 runat="server" 属性,以便可以显示为如下内容:
复制代码
保存页。
要对页进行测试,首先需要在应用主题前先查看页面,然后查看应用不同主题的效果。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl15b8b0c3c,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl15img,";
创建主题并将其应用于页
ASP.NET 使得将预定义的主题应用于页或创建唯一的主题变得很容易。(有关详细信息,请参见如何:定义 ASP.NET 主题。)在演练的此部分中,您将创建一个包含一些简单外观的主题,这些外观定义控件的外观。
将创建名为“App_Themes”的文件夹和名为“Theme1”的子文件夹。
将“Theme1”文件夹重命名为“sampleTheme”。
此文件夹名将成为创建的主题的名称(在这里是“sampleTheme”)。具体名称无关紧要,但是在应用自定义主题的时候,必须记住该名称。
右击“sampleTheme”文件夹,选择“添加新项”,添加一个新的文本文件,然后将该文件命名为“sampleTheme.skin”。
在 sampleTheme.skin 文件中,按下面的代码示例所示的方法添加外观定义。
复制代码
外观定义与创建控件的语法类似,不同之处在于,定义只包括影响控件外观的设置。例如,外观定义不包括 ID 属性的设置。
保存该外观文件,然后将其关闭。
现在可以在应用任何主题前对页进行测试。
控件以它们的默认外观显示。
关闭浏览器,然后返回到 Visual Web Developer。
在“源”视图中,向 @ Page 指令添加下面的属性:
复制代码
按 Ctrl+F5 再次运行该页。
这次,控件使用主题中定义的配色方案呈现。
“标签”和“按钮”控件将按照您在 sampleTheme.skin 文件中完成的设置显示。因为没有在 sampleTheme.skin 文件中为“日历”控件设置项,该控件以默认外观显示。
在 Visual Web Developer 中,将该主题设置成另一个主题(如果存在)的名称。
按 Ctrl+F5 再次运行该页。
控件再次更改外观。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl195ec8d3e,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl19img,";
样式表主题和自定义主题
创建了主题后,可以定制如何在应用程序中使用主题,方法是:将主题作为自定义主题与页关联(如上一节中所做的那样),或者将主题作为样式表主题与页关联。样式表主题使用和自定义主题相同的主题文件,但是样式表主题在页的控件和属性中的优先级更低,相当于 CSS 文件的优先级。在 ASP.NET 中,优先级的顺序是:
主题设置,包括 Web.config 文件中设置的主题。
本地页设置。
样式表主题设置。
在这里,如果选择使用样式表主题,则在页中本地声明的任何项都将重写主题的属性。同样,如果使用自定义主题,则主题的属性将重写本地页中的任何内容,以及使用中的任何样式表主题中的任何内容。
更改页声明:
复制代码
为样式表主题声明:
复制代码
按 Ctrl+F5 运行该页。
注意,“Label1”控件的 ForeColor 属性为红色。
切换到“设计”视图。
选择“Label1”,然后在“属性”中将“ForeColor”设置为“蓝色”。
按 Ctrl+F5 运行该页。
“Label1”的 ForeColor 属性为蓝色。
切换到“源”视图。
更改页声明,以声明非样式表主题的主题,方法是将:
复制代码
改回为:
复制代码
按 Ctrl+F5 运行该页。
“Label1”的 ForeColor 属性再次变为红色。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl24a4db207,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl24img,";
基于现有控件创建自定义主题
创建外观定义的一种简单方法是使用设计器来设置外观属性,然后将控件定义复制到外观文件。
BackColor 青色
BorderColor 红色
BorderWidth 4
CellSpacing 8
Font-Name 宋体
Font-Size 大
SelectedDayStyle-BackColor 红色
SelectedDayStyle-ForeColor 黄色
TodayDayStyle-BackColor 粉红
切换到“源”视图,并复制 <asp:calendar> 元素及其属性。
切换到 sampleTheme.skin 文件或打开该文件。
将 Calendar 控件定义粘贴到 sampleTheme.skin 文件中。
从 sampleTheme.skin 文件中的定义中移除 ID 属性。
保存 sampleTheme.skin 文件。
切换到 Default.aspx 页,再将一个“日历”控件拖到页上。不要设置该控件的任何属性。
运行 Default.aspx 页。
两个“日历”控件将具有相同的外观。第一个“日历”控件反映出您设置的显式属性设置。第二个“日历”控件从您在 sampleTheme.skin 文件中创建的外观定义中继承其外观属性。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl25c3604ef,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl25img,";
将主题应用于网站
可以将一个主题应用于整个网站,这意味着不需要再次将该主题应用于各个页。(如果需要,可以在页上重写主题设置。)
在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。
在“模板”下,选择“Web 配置文件”,然后单击“添加”。
注意 不需要键入名称,因为文件总是被命名为 Web.config。
如果 <pages> 元素尚不存在,请添加该元素。<pages> 元素应该出现在 <system.web> 元素内部。
将下列属性添加到 <pages> 元素。
复制代码
保存并关闭 Web.config 文件。
切换到 Default.aspx 并切换到“源”视图。
从页声明中移除 theme="themeName" 属性。
按 Ctrl+F5 运行 Default.aspx。
该页现在使用 Web.config 文件中指定的主题显示。
如果选择在页声明中指定一个主题名称,该主题名称将重写 Web.config 文件中指定的任何主题。
演练:在 Visual Studio 中使用主题自定义网站
此演练演示如何使用主题为网站中的页和控件应用一致的外观。主题可以包括定义单个控件的常用外观的外观文件、一个或多个样式表和用于控件(如 TreeView 控件)的常用图形。此演练演示如何在网站中使用 ASP.NET 主题。
本演练中阐释的任务包括:
将预定义的 ASP.NET 主题应用于单个页和整个站点。
创建您自己的包括外观的主题,这些外观用于定义单个控件的外观。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl08947c9c8,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl08img,";
先决条件
若要完成本演练,您需要:
Microsoft Visual Web Developer (Visual Studio)。
.NET Framework。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl097bc1267,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl09img,";
创建网站
如果已经在 Visual Web Developer 中创建了一个网站(例如,按照演练:在 Visual Web Developer 中创建基本网页中的步骤),则可以使用该网站而转到下一节。否则,按照下面的步骤创建一个新的网站和网页。
创建文件系统网站
打开 Visual Web Developer。在“文件”菜单上单击“新建网站”。
出现“新建网站”对话框。
在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。
在“位置”框中输入要保存网站页面的文件夹的名称。
例如,键入文件夹名“C:\WebSites”。
在“语言”列表中,单击您想使用的编程语言。
单击“确定”。
Visual Web Developer 创建该文件夹和一个名为 Default.aspx 的新页。
若要在此演练中开始使用主题,请设置一个 Button 控件、一个 Calendar 控件和一个 Label 控件,以便了解主题是如何影响这些控件的。
将控件放在页上
切换到“设计”视图。从“工具箱”的“标准”组中将“日历”控件、“按钮”控件和“标签”控件拖到页上。页的具体布局无关紧要。
注意 |
---|
不要对任何控件应用任何格式。例如,不要使用 AutoFormat 命令来设置“日历”控件的外观。 |
确保页的 <head> 元素具有 runat="server" 属性,以便可以显示为如下内容:
复制代码
<head runat="server"></head>
保存页。
要对页进行测试,首先需要在应用主题前先查看页面,然后查看应用不同主题的效果。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl15b8b0c3c,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl15img,";
创建主题并将其应用于页
ASP.NET 使得将预定义的主题应用于页或创建唯一的主题变得很容易。(有关详细信息,请参见如何:定义 ASP.NET 主题。)在演练的此部分中,您将创建一个包含一些简单外观的主题,这些外观定义控件的外观。
创建新主题
在 Visual Web Developer 中,右击网站名,单击“添加 ASP.Net 文件夹”,然后单击“主题”。将创建名为“App_Themes”的文件夹和名为“Theme1”的子文件夹。
将“Theme1”文件夹重命名为“sampleTheme”。
此文件夹名将成为创建的主题的名称(在这里是“sampleTheme”)。具体名称无关紧要,但是在应用自定义主题的时候,必须记住该名称。
右击“sampleTheme”文件夹,选择“添加新项”,添加一个新的文本文件,然后将该文件命名为“sampleTheme.skin”。
在 sampleTheme.skin 文件中,按下面的代码示例所示的方法添加外观定义。
复制代码
<asp:Label runat="server" ForeColor="red" Font-Size="14pt" Font-Names="Verdana" /> <asp:button runat="server" Borderstyle="Solid" Borderwidth="2px" Bordercolor="Blue" Backcolor="yellow"/>
注意 |
---|
定义的具体特性无关紧要。上面选择的值是建议值,采用这些建议值在稍后测试主题时效果将较为明显。 |
保存该外观文件,然后将其关闭。
现在可以在应用任何主题前对页进行测试。
注意 |
---|
如果向“sampleTheme”文件夹添加一个级联样式表文件 (CSS),则该级联样式表将应用于所有使用该主题的页。 |
测试主题
按 Ctrl+F5 运行该页。控件以它们的默认外观显示。
关闭浏览器,然后返回到 Visual Web Developer。
在“源”视图中,向 @ Page 指令添加下面的属性:
复制代码
<%@ Page Theme="sampleTheme" ... %>
注意 |
---|
必须在属性值中指示实际的主题的名称(在此例中,即先前定义的 sampleTheme.skin 文件)。 |
这次,控件使用主题中定义的配色方案呈现。
“标签”和“按钮”控件将按照您在 sampleTheme.skin 文件中完成的设置显示。因为没有在 sampleTheme.skin 文件中为“日历”控件设置项,该控件以默认外观显示。
在 Visual Web Developer 中,将该主题设置成另一个主题(如果存在)的名称。
按 Ctrl+F5 再次运行该页。
控件再次更改外观。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl195ec8d3e,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl19img,";
样式表主题和自定义主题
创建了主题后,可以定制如何在应用程序中使用主题,方法是:将主题作为自定义主题与页关联(如上一节中所做的那样),或者将主题作为样式表主题与页关联。样式表主题使用和自定义主题相同的主题文件,但是样式表主题在页的控件和属性中的优先级更低,相当于 CSS 文件的优先级。在 ASP.NET 中,优先级的顺序是:
主题设置,包括 Web.config 文件中设置的主题。
本地页设置。
样式表主题设置。
在这里,如果选择使用样式表主题,则在页中本地声明的任何项都将重写主题的属性。同样,如果使用自定义主题,则主题的属性将重写本地页中的任何内容,以及使用中的任何样式表主题中的任何内容。
使用样式表主题并查看优先级顺序
切换到“源”视图。更改页声明:
复制代码
<%@ Page theme="sampleTheme" %>
为样式表主题声明:
复制代码
<%@ Page StyleSheetTheme="sampleTheme" %>
按 Ctrl+F5 运行该页。
注意,“Label1”控件的 ForeColor 属性为红色。
切换到“设计”视图。
选择“Label1”,然后在“属性”中将“ForeColor”设置为“蓝色”。
按 Ctrl+F5 运行该页。
“Label1”的 ForeColor 属性为蓝色。
切换到“源”视图。
更改页声明,以声明非样式表主题的主题,方法是将:
复制代码
<%@ Page StyleSheetTheme="sampleTheme" %>
改回为:
复制代码
<%@ Page Theme="sampleTheme" %>
按 Ctrl+F5 运行该页。
“Label1”的 ForeColor 属性再次变为红色。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl24a4db207,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl24img,";
基于现有控件创建自定义主题
创建外观定义的一种简单方法是使用设计器来设置外观属性,然后将控件定义复制到外观文件。
基于现有控件创建自定义主题
在“设计”视图中,设置“日历”控件的属性,使该控件具有特别的外观。下列设置为推荐设置:BackColor 青色
BorderColor 红色
BorderWidth 4
CellSpacing 8
Font-Name 宋体
Font-Size 大
SelectedDayStyle-BackColor 红色
SelectedDayStyle-ForeColor 黄色
TodayDayStyle-BackColor 粉红
注意 |
---|
定义的具体特性无关紧要。上面列表的值是建议值,采用这些建议值在稍后测试主题时效果将较为明显。 |
切换到 sampleTheme.skin 文件或打开该文件。
将 Calendar 控件定义粘贴到 sampleTheme.skin 文件中。
从 sampleTheme.skin 文件中的定义中移除 ID 属性。
保存 sampleTheme.skin 文件。
切换到 Default.aspx 页,再将一个“日历”控件拖到页上。不要设置该控件的任何属性。
运行 Default.aspx 页。
两个“日历”控件将具有相同的外观。第一个“日历”控件反映出您设置的显式属性设置。第二个“日历”控件从您在 sampleTheme.skin 文件中创建的外观定义中继承其外观属性。
var ExpCollDivStr = ExpCollDivStr;
ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl25c3604ef,";
var ExpCollImgStr = ExpCollImgStr;
ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl25img,";
将主题应用于网站
可以将一个主题应用于整个网站,这意味着不需要再次将该主题应用于各个页。(如果需要,可以在页上重写主题设置。)
为网站设置主题
如果没有将一个 Web.config 文件自动添加到网站,则可按下面的步骤创建 Web.config 文件:在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。
在“模板”下,选择“Web 配置文件”,然后单击“添加”。
注意 不需要键入名称,因为文件总是被命名为 Web.config。
如果 <pages> 元素尚不存在,请添加该元素。<pages> 元素应该出现在 <system.web> 元素内部。
将下列属性添加到 <pages> 元素。
复制代码
<pages theme="sampleTheme" />
注意 |
---|
Web.config 是区分大小写的,值是大小写混合格式。(例如:theme 和 styleSheetTheme)。 |
切换到 Default.aspx 并切换到“源”视图。
从页声明中移除 theme="themeName" 属性。
按 Ctrl+F5 运行 Default.aspx。
该页现在使用 Web.config 文件中指定的主题显示。
如果选择在页声明中指定一个主题名称,该主题名称将重写 Web.config 文件中指定的任何主题。
相关文章推荐
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 3 :如何:定义 ASP.NET 页主题 (Visual Studio)
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 7 :演练:创建用户可选择的主题
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 1 :ASP.NET 主题和外观概述
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 4 :如何:应用 ASP.NET 主题
- 演练:开发和使用自定义服务器控件(摘自MSDN)
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 5 :如何:禁用 ASP.NET 主题
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 5 : 在 Visual Studio 中共享母版页
- [摘自MSDN] ASP.Net2.0学习 [2] 主题 6 :如何:以编程方式应用 ASP.NET 主题
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 6 : 以编程方式使用 ASP.NET 母版页
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 1 : ASP.NET 母版页概述
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 3 : 为 ASP.NET 母版页创建内容页
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 4 : 嵌套的 ASP.NET 母版页
- 学习笔记--asp.net主题和外观(转自msdn,仅为自己学习存储和有意读者使用)
- ASP.NET2.0 快速入门 ----使用主题对站点进行自定义
- ASP.NET2.0使用主题设计网站
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 7 : 母版页和内容页中的事件
- [摘自MSDN] ASP.Net2.0学习 [1] 母版页 7: 引用 ASP.NET 母版页的内容
- 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示
- 学习笔记 Tianmao 篇 recyclerView 的自定义使用