用主题(App_Themes)做换肤功能,页面会加载App_Themes下所有CSS,能不能控制排除或只加载哪几个因为不同的页面,用的CSS不同,但又不想都加载进来浪费

解决方案 »

  1.   


    CSS全加载进来了,是不是要重写pagetheme的某些方法
      

  2.   

    web.config里放个默认的,某个页要变,在这个页的Page_PreInit里设置Page.Theme=Theme名称 就可以了哇~
      

  3.   

    web.config里放
    <pages theme="Blue"/>
      

  4.   

    那样还是全加载CSS进来了,我是希望我设置的Theme,不要加载全部的CSS,可以控制,在哪控制
      

  5.   

    Page_PreInit控制Page.Theme就可以了哇~我过去做的都没问题哇~
      

  6.   

    ASP.NET 2.0开发指南 里的一个例子<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><script runat="server">
        void Page_PreInit(Object sender, EventArgs e)
        {
            //设置页面所设置的主题
            string theme="";
            if (Request.QueryString["theme"] == null)
            {
                theme = "Red";
            }
            else
            {
                theme = Request.QueryString["theme"];
            }
            Page.Theme = theme;
            //设置DropDownList控件的选中项
            ListItem item = DropDownList1.Items.FindByValue(theme);
            if (item != null)
            {
                item.Selected = true;
            }
        }
        void SelectedIndexChanged(Object sender, EventArgs e)
        {
            //获取DropDownList选中项值,并进行页面重定向
            string url = Request.Path + "?theme=" + DropDownList1.SelectedItem.Value;
            Response.Redirect(url);
        }
    </script><!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>示例6-5</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <fieldset style="width: 210px">
                    <legend>动态加载主题</legend>
                    <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="SelectedIndexChanged"
                        AutoPostBack="True">
                        <asp:ListItem Value="Red">启用Red主题</asp:ListItem>
                        <asp:ListItem Value="Blue">启用Blue主题</asp:ListItem>
                    </asp:DropDownList>
                    <br />
                    <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
                </fieldset>
            </div>
        </form>
    </body>
    </html>
      

  7.   

    这还是整个主题中的CSS,汗...没明白我的意思啊他会加载red中所有的CSS,我只要部分CSS文件,如何控制
      

  8.   

    你是RED里有多个CSS文件还是有一个文件需要这个文件的一部分?如果有多个。。为什么要有多个?多个建立多个theme不就好了?
      

  9.   

    我的方法就是不用他那Theme功能,微软它越帮我门做的越多,我们自由度越小,有那工夫研究他的theme机制不如自己直接建个themes文件夹自己管理。
      

  10.   

    楼主其实和我一样,看样子:
    我一般css结构是common.css,index.css,innerpage.css,details.css
    主页样式,内页和详细页样式(有人也这样搞font.css,layout.css,theme.css等)。
    你会发现asp.net很贱的搞成这样:
    index.aspx:
    类似
    <head>
    common.css
    index.css
    innerpage.css
    details.css
    有多少读多少,(我没实验,丫,我放3000个css,看你崩溃不)
    首页本来只用首页样式文件的,丫把内页也读进来,当然可以只做一个css文件,所以页面样式统统放到这个default.css,不过这样文件体积变大,同时css直接冲突几率增加,比如首页body我想1000px定宽,内页想全尺寸怎么办?
    </head>
      

  11.   

    你别用theme ,比如:在imgs里建立几个css
    然后再页面的preInit中选择加载