ASP.NET中的Theme和Skin

本文详细介绍了ASP.NET中的主题(Theme)与皮肤(Skin)的概念。解释了如何使用.skin文件来定义控件外观,并说明了主题如何包含CSS、图片等资源。此外,还对比了主题与CSS之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Theme(主题)

A theme is a collection of property settings that allow you to define the look of pages and controls, and then apply the look consistently across pages in a Web application, across an entire Web application, or across all Web applications on a server.

 

Theme and Control Skins

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

Theme是由一系列的元素组成的, 包括: skin, cascading style sheets(CSS), images, 和其他的资源. 一个Theme至少要有skin. Theme是在你的web site或者你的web server的一个特定的文件夹里定义的.

 

Skin(皮肤)

---------------------

skin文件的后缀名是.skin, 该文件中包含诸如Button, Label, TextBox, 或者Calendar之类控件的属性配置. 控件的skin配置跟control markup自身很像, 但是仅包含你想要作为属性的一部分的那些属性.  比如下面就是一个button控件的skin:

<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

 

You create .skin files in the Theme folder.   A .skin file can contain one or more control skins for one or more control types. You can define skins in a separate file for each control or define all the skins for a theme in a single file.

 

MyWebSite
  App_Themes
    BlueTheme
      Controls.skin
      BlueTheme.css
    PinkTheme
      Controls.skin
      PinkTheme.css

 

控件的skin有两种, default skins和named skins:

  • 当一个theme应用到一个页面上的时候, Default skin会自动地应用到同种类的所有的控件上. 如果一个control skin没有SkinID属性的话, 那么它就是一个default skin.
  • named skin是一个带有SkinID属性集的control skin. named skin不会自动地按类型应用到控件上. 取而代之的是, 你需要显示地通过设置控件的SkinID属性来应用一个named skin到一个控件上. 创建named skin允许你为一个application中的相同控件的不同实例设置不同的skin.

CSS (Cascading Style Sheets)

---------------------

主题还包括层叠样式表(css)文件. 当你放一个css文件到theme文件夹中的时候, 样式表就被自动地作为theme的一部分被应用起来了. 

 

Theme Graphics and Other Resources

----------------------

主题还可以包括图形和其他资源, 比如脚本文件或者声音文件. 比如说, 你的页面theme也许会为TreeView控件包括一个skin, 作为这个theme的一部分, 你可以包含用于代表展开按钮和折叠按钮的图片.

 

典型地, theme的资源文件都在跟skin文件相同的文件夹中, 但是他们也可以存在于web application的其他地方, 比方说theme文件夹的子文件夹. 如果要引用子文件夹的资源, 可以像下面的例子一样使用一个路径:

<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

 

你还可以引用theme文件夹之外的资源文件. 如果你使用波浪线(~)语法去引用资源文件的话, Web application会自动地找到图片. 比如, 你把一个theme的资源放在一个你appliction的子文件夹中, 你可以使用这样形式的路径来引用你的资源文件:

<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />

 

Theme和Cascading Style Sheets的区别

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

Theme和Cascading Style Sheets都可以定义一系列可以被应用到任何页面的常用属性. 然而, 他们在下面的方面有不同:

  • Theme能够为一个控件或者页面定义很多属性, 而不仅仅是style属性. 比如说, 使用theme, 你可以为TreeView控件定义图片, 还有GridView控件的模板布局, 等等.
  • Theme可以包括图片文件.
  • Theme并不会像样式表一样层叠. 默认情况下, 任何通过页面的Theme属性定义的属性值都会覆盖控件所声明的属性值, 除非你显式地使用StyleSheetTheme属性应用theme.
  • 每个页面上仅可以应用一个theme. 你不能再一个页面上应用多个theme, 而不像样式表那样可以应用多个style sheet.

 

摘译自:

ASP.NET Themes and Skins

http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx

 

 

分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,而且有时候我们需要对DataListRepeater甚至自定义数据绑定控件进行分页,手工编写分页代码不但技术难度大、任务繁琐而且代码重用率极低,因此分页已成为许多ASP.NET程序员最头疼的问题之一。 AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等,因为AspNetPager控件数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等等。 AspNetPager 7.2 版发布 新增属性 PagingButtonLayoutType,可设置分页导航元素(数字页索引、上页、下页、首页尾页)的布局方式,该属性值是一个PagingButtonLayoutType枚举,通过设置该属性为PagingButtonLayoutType.UnorderedList或PagingButtonLayoutType.Span,允许将这些分页导航元素包含在 与或与标签之间,以便于为这些分页元素应用CSS样式。 新增 PagingButtonClass 与 PagingButtonStyle 属性,可以单独为分页导航按钮(数字页索引、上页、下页、首页尾页)设置CSS样式; 新增 FirstLastButtonClass 与 FirstLastButtonStyle 属性,可以单独为首页尾页分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则首页尾页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增 NextPrevButtonClass 与 NextPrevButtonStyle 属性,可以单独为上页下页分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则上页下页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增 MoreButtonClass 与 MoreButtonStyle 属性,可以单独为更多页(...)分页导航按钮设置CSS样式,如果该属性未设置,但指定了PagingButtonClass 与 PagingButtonStyle 属性的值,则上页下页按钮样式将使用 PagingButtonClass 与 PagingButtonStyle 属性中指定的样式; 新增属性 ShowMoreButtons ,可以指定是否显示更多页按钮; 新增属性 CurrentPageButtonPosition ,可设置在每次分页后,当前页数字索引在所有的数字页索引中的显示位置,该属性值是一个PagingButtonPosition枚举,对应的值及说明如下: Beginning:当前页数字索引总是显示在所有数字页索引的最前面; End:当前页数字索引总是显示在所有数字页索引的最后面; Center:当前页数字索引总是显示在所有数字页索引的中间; Fixed:默认值,固定不变; 控件的CssClass属性仅应用于控件的窗口元素(div),将不再应用于下属分页元素; 废止属性CenterCurrentPageButton,可以用CurrentPageButtonPosition属性取代; 修改CurrentPageIndexn属性,允许在程序中任何地方以编程方式设置CurrentPageIndex的值来动态指定当前页,直接设置该属性的值时将同时引发PageChangingPageChanged 事件,实现点击分页按钮一样的分页功能; 修正了7.1版中设置SubmitButtonImageUrl属性后,Postback回发分页方式情况下点击数字页索引按钮不引发分页事件的bug; 修正了使用Url分页时,如果页面上没有服务器端form控件时无法注册客户端脚本的bu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值