ASP.NET动态加载主题示例

1.先制作两个主题Default和Blue

App_Themes\Default\Default.skin:
<asp:TextBox runat="server" BorderWidth="1px" BorderColor="Red" ForeColor="Red"></asp:TextBox>

App_Themes\Blue\Blue.skin:
<asp:TextBox runat="server" BorderWidth="1px" BorderColor="Blue" ForeColor="Blue"></asp:TextBox>

2.动态加载主题

Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" StylesheetTheme="Default"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>动态加载主题示例-Mzwu.Com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" PostBackUrl="?theme=default" Text="应用主题一" />
        <asp:Button ID="Button2" runat="server" PostBackUrl="?theme=blue" Text="应用主题二" /><br /><br />
        <asp:TextBox ID="TextBox1" runat="server" BorderWidth="1px" BorderColor="Black" ForeColor="Black"></asp:TextBox><br />
    </div>
    </form>
</body>
</html>

Default.aspx.cs:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_PreInit(object sender, EventArgs e)
    {
        if (Request.QueryString["theme"] != null)
        {
            Page.Theme = Request.QueryString["theme"];
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        //
    }
}

ASP.NET主题说明

·一个主题通常包含皮肤文件、css文件和图片资源等;
·皮肤文件中定义的是服务器控件外观,css文件通常定义页面和普通html控件样式;
·皮肤可分为默认皮肤和命名皮肤,命名皮肤有SkinID属性,默认皮肤没有;
·皮肤文件中只允许出现控件外观相关属性的设置,设置非外观属性值将出错;
·主题下的css文件不需格外引用,自动应用到页面中,但要求页面上有<head runat="server"/>;
·样式设置优先级:Page指令的StyleSheetTheme属性 < 控件属性 < Page指令的Theme属性;

评论: 0 | 引用: 0 | 查看次数: 4869
发表评论
登录后再发表评论!