在 ASP.NET 2.0 中创建 Web 应用程序主题(一)

在ASP.net2.0中创建Web应用程序主题

来源:MSDN

适用范围:
MicrosoftASP.NET2.0
MicrosoftVisualStudio2005

摘要:StephenWalther将论述主题(ASP.NET2.0的一项新增功能)的细节,其中包括如何在主题中同时使用级联样式表和图像,以及如何在运行时动态加载主题。(本文包含一些指向英文站点的链接。)

本页内容
引言创建和应用简单主题默认外观与命名外观将主题应用于整个应用程序主题与StyleSheetTheme图像和主题级联样式表和主题动态加载主题结论参考资料

引言

主题是MicrosoftASP.NET2.0的一项新增功能,使用此功能可以一次定义一组控件的外观,并可以将该外观应用于整个Web应用程序。例如,通过利用主题功能,您可以在一个中心位置为应用程序中的所有TextBox控件定义共同的外观,如背景颜色和前景颜色。使用主题功能可以轻松建立并维护整个网站外观的一致性。

主题与级联样式表并不相同。使用级联样式表可以控制浏览器上的HTML标记的外观。而主题则应用在服务器上,并适用于ASP.NET控件的属性。例如,您可以使用主题来指定GridView控件是否显示页眉或页脚,但不能使用级联样式表来执行此操作。

主题与母版页也并不相同。母版页也是ASP.NET2.0的一项新增功能,使用此功能可以为Web应用程序中的多个内容页指定共同的布局。使用主题可以控制页面中各个控件的外观,而母版页则不能。(在设计Web应用程序时,您可以并且可能将同时使用母版页和主题。)

在本文中,您要学习如何在ASP.NET2.0应用程序中利用主题功能。您会学习到如何在主题中同时使用级联样式表和图像。此外,我们还将学习如何在运行时动态加载主题。

返回页首

创建和应用简单主题

ASP.NET2.0不附带任何默认主题。当ASP.NET2.0发布之后,您可以从网站(例如www.ASP.net)上下载并使用主题。但是,现在,您必须从头开始创建自己要使用的所有主题。

此外,系统会警告您MicrosoftVisualWebDeveloper不提供任何用于创建主题的工具支持。尽管您确实可以使用VisualWebDeveloper来创建主题并将主题应用于网页;但在Web浏览器中实际打开页面前,您看不到将主题应用于页面的效果。换句话说,VisualWebDeveloper不提供任何用于创建主题的设计器支持。

了解这些警告后,我们继续创建简单主题。创建主题所需的第一步是在应用程序的根目录中创建一个名为Themes的新文件夹。(当ASP.NET2.0的BETA2版本发布后,您就需要将此文件夹命名为Application_Themes了。)当您尝试应用主题时,ASP.NETFramework将自动查找此文件夹。

 

 

创建了Themes文件夹之后,您可以通过向该Themes文件夹中添加子文件夹来创建一个或多个主题。我们将创建的第一个主题名为OrangeTheme。因此,我们需要在Themes文件夹中添加一个名为OrangeTheme的新文件。

然后,我们需要将Skin文件添加到OrangeTheme文件夹中。Skin文件是实际包含主题所应用的格式设置的文件。换句话说,该文件包含主题所应用的一个或多个控件外观。您可以将Skin文件命名为任何名称,只要以扩展名.Skin结尾即可。

一个主题可以包含一个Skin文件,也可以包含数百个Skin文件。您可以根据需要将Skin文件命名为任何名称。这没有关系,因为在将主题应用于页面时,ASP.NETFramework将把所有Skin文件合并在一起,而将这些文件视为单个Skin文件。

通过使用Theme或@Page指令的StyleSheetTheme属性,或者通过在应用程序配置文件中设置pages元素(ASP.NET设置架构)元素,都可以应用主题。VisualWebDeveloper只以可视方式显示使用StyleSheetTheme属性应用的主题。

创建页主题

在解决方案资源管理器中,右击要为其创建页主题的网站名称,然后单击“添加ASP.NET文件夹”。

单击“主题”。

如果App_Themes文件夹不存在,VisualWebDeveloper则会创建该文件夹。VisualWebDeveloper即为主题创建一个新文件夹,作为App_Themes文件夹的子文件夹。

键入新文件夹的名称。

此文件夹的名称也是页主题的名称。例如,如果您创建一个名为\App_Themes\FirstTheme的文件夹,则主题的名称为FirstTheme。

将构成主题的控件外观、样式表和图像的文件添加到新文件夹中。

 

我们将在主题OrangeTheme中使用列表1中的Skin文件(名为FormControls.Skin):

列表1:FormControls.Skin

<asp:TextBoxBackColor="Orange"ForeColor="DarkGreen"Runat="Server"/><asp:ButtonBackColor="Orange"ForeColor="DarkGreen"Font-Bold="True"Runat="Server"/>

 
 

您应当注意到了,列表1中的Skin文件包含TextBox和Button控件的声明。分别为这两个控件的BackColor和ForeColor属性提供了值。此外,还声明Button控件使用加粗字体。

请注意,您可以通过声明一个控件实例并设置一个或多个控件属性,从而使用Skin文件指定控件的外观。您可以在Skin文件中设置的控件属性是有限的。通常,仅可以设置外观属性。例如,您可以设置TextBox控件的BackColor、ForeColor甚至Text属性。但是不能在Skin文件中设置TextBox控件的AutoPostBack属性。

此外,您不能将外观用于每个ASP.NET控件。例如,您不能将外观用于Repeater控件、Literal控件或LoginView控件,也不能将外观用于User控件(但是,可以将外观应用于User控件中所包含的控件)。

将FormControls外观应用于页面之后,页面中的每个TextBox和Button控件都将使用在Skin文件中指定的属性值来显示。即便已经为该页面中的TextBox控件的BackColor属性指定了值,也是如此。Skin文件将替代页面中的控件属性。

列表2中的页面应用了主题OrangeTheme:

列表2:OrangePage.aspx

<%@PageTheme="OrangeTheme"%><html><headrunat="server"><title>OrangePage</title></head><body><formid="form1"runat="server">Enteryourname:<br/>

<asp:TextBoxID="txtName"Runat="Server"/><br/><br/><asp:ButtonID="btnSubmit"Text="SubmitName"Runat="Server"/></form></body>

</html>

转载于:https://www.cnblogs.com/jaryup/archive/2012/04/10/2440150.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值