ASP.NET/Theme
< ASP.NET
APP_Theme文件夹中的不同主题(Theme)包括的内容有:皮肤(skin),CSS样式,图片、其他资源
Asp.Net,attributes与elements的主题选择的优先顺序:
- @Page中的Theme特性
- Web.config文件中的<system.Web>下的<pages Theme="themeName">元素中的特性设置
- 本地控件的特性设置
- @Page中的StyleSheetTheme特性设置
- Web.config文件中的<system.Web>下的<pages StytleSheetTheme="themeName">元素中的特性设置
更换皮肤时需要指明 SkinID , ImageUrl
Page.MasterPageFile与Page.Theme这2个属性都是在PreInit()中设置。
ASP.NET 2.0 中新增加了 Theme 的功能。Theme的实现包括CSS、Skin。
- 在 Web 项目中创建 App_Themes 目录。它是预定义的目录,ASP.NET 2.0 会自动识别其目录下的 Theme 。
- 在 App_Themes 目录创建子目录。每个子目录就是一个theme
- 为 App_Themes 下的每个子目录添加 Skin 文件,如my1.Skin。ASP.NET 2.0 会自动分析每一个 Skin 文件,在这里的命名只需要为了开发时方便分类。
- 为 App_Themes 下的每个子目录添加 CSS 文件。ASP.NET 2.0会自动将每一个 CSS 文件添加到每一个使用此样式的页面中去。
在子页面的page 页面指令中可以指明使用哪个theme。例如: <%@ Page Theme="OrangeTheme">
如果想到在整个网站应用某个Theme 就需要在 Web.Config 定义。
<configuration>
<system.web>
<pages theme="OrangeTheme" />
</system.web>
</configuration>
这样的定义相当于默认一个 Theme 在所有网站文件中,使用时仍可以为每个页面定义 Theme 。
如果想用编程方式定义 Theme 必需在 Page_PreInit事件中处理,如下:
void Page_PreInit(object sender, EventArgs e)
{
Page.Theme = Request["ThemeName"];
// 如果需要以编程的方式为 Page 载入 MasterPage 文件,也需要在此定义。
this.MasterPageFile = Request["MasterPageFile"];
}
禁用单个页面的主题,只要将@Page指令的EnableTheming属性设置成false即可。<%@Page EnableTheming="false"%>
如果想禁用单个控件的主题,只要将控件的EnableTheming属性设置为false即可。<asp:Button id="Button1" runat="server" Enable Theming="false"/>