|
ASP.NET的动态加载主题
ASP.NET除了在页面声明或者配置文件中指定主题和外观首选项之外,还可以通过编程方式动态加载主题。只需要在PreInit事件中动态地指定Theme属性或者StyleSheetTheme属性,就可以实现主题的动态切换效果。
【示例】下面演示动态加载主题的方式。
(1)创建一个网站,命名为“动态加载主题”。
(2)在解决方案资源管理器中的网站上单击右键,在弹出的快捷菜单中选择“添加ASP.NET文件夹”|“主题”命名。VS 2012会添加一个名为App_Themes的文件夹,并在该文件夹下添加一个命名为“主题1”的子文件夹。将“主题1”文件夹重命名为“MyTheme”。
(3)在MyTheme文件夹上单击鼠标右键,在弹出的快捷菜单中选择“添加新项”命令。在打开的“添加新项”对话框中选择“外观文件”选项,命名为“SkinFile.skin”。单击“添加”按钮后,VS 2012将自动进入皮肤文件窗口。SkinFile.skin文件的代码如下:- <asp:ListBox runat="server" ForeColor="White" BackColor="gray" />
- <asp:Button runat="server" ForeColor="White" BackColor="gray" />
复制代码 (4)在网站上添加一个名称为“Default.aspx”的Web页面。在该页面上添加一个ListBox控件、一个Button控件。代码如下:- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title></title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- 请选择一个主题
- <br />
- <asp:ListBox ID="ListBox1" runat="server" >
- <asp:ListItem>主题1</asp:ListItem>
- <asp:ListItem>主题2</asp:ListItem>
- </asp:ListBox>
- <asp:Button ID="Button1" runat="server" Text="选择主题" OnClick="Button1_Click" />
- </div>
- </form>
- </body>
- </html>
复制代码 然后在Web页面中添加事件。Page_Load事件代码来加载可选择的主题。按钮的单击事件将用户选择的主题保存到会话变量中。Page_Load事件动态地应用主题。Default.aspx页面后置代码如下:

运行结果如下图所示。

在该示例中,如果没有设置主题,则Page.Theme为空,不应用主题。如果设置主题,将应用保存在Session中的主题。
注意:在按钮的单击事件中使用Transfer()方法刷新页面而没有使用页面回发。因为页面若再次回应PreInit事件,最有效率的方法是Server.Transfer()方法。
关键字:ASP.NET的动态加载主题 ASP.NET 动态加载主题 |
|