ASP.NET/Theme

维基教科书,自由的教学读本

APP_Theme文件夹中的不同主题(Theme)包括的内容有:皮肤(skin),CSS样式,图片、其他资源

Asp.Net,attributes与elements的主题选择的优先顺序:

  1. @Page中的Theme特性
  2. Web.config文件中的<system.Web>下的<pages Theme="themeName">元素中的特性设置
  3. 本地控件的特性设置
  4. @Page中的StyleSheetTheme特性设置
  5. Web.config文件中的<system.Web>下的<pages StytleSheetTheme="themeName">元素中的特性设置

更换皮肤时需要指明 SkinID , ImageUrl

Page.MasterPageFile与Page.Theme这2个属性都是在PreInit()中设置。

ASP.NET 2.0 中新增加了 Theme 的功能。Theme的实现包括CSS、Skin。

  1. 在 Web 项目中创建 App_Themes 目录。它是预定义的目录,ASP.NET 2.0 会自动识别其目录下的 Theme 。
  2. 在 App_Themes 目录创建子目录。每个子目录就是一个theme
  3. 为 App_Themes 下的每个子目录添加 Skin 文件,如my1.Skin。ASP.NET 2.0 会自动分析每一个 Skin 文件,在这里的命名只需要为了开发时方便分类。
  4. 为 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"/>