当前位置:编程学习 > C#/ASP.NET >>

asp.net2.0中换肤

我想实现网站的换肤功能。
我在APP_Themes文件夹下,写了三个主题。然后我在一个页面放了三个Imagebuttom,我想实现:当点击每一个imagebuttom后,网站的整个皮肤都做相应的变化,而不是单个页面的改变。
我不知道具体怎么去实现,希望大家能给我指点指点。谢谢~!! --------------------编程问答-------------------- kkkkkkkk --------------------编程问答-------------------- 欢迎您来访 --------------------编程问答-------------------- 点击 ImageButton 之后,把主题名放在 cookie 里,在 PreInit 事件里设置 Theme

void Page_PreInit(object sender, EventArgs e)
{
  string ThemeName = Request["thename"];
  if (ThemeName != null)
  {
    Page.Theme = ThemeName;
  }
}


--------------------编程问答-------------------- 我也是这么写的,但是现在我出现这么一个问题:我只能给一个页面换肤,而不是整个网站,并且我在每个页面中都写了这个 Page_PreInit(object sender,CommandEventArgs e)事件。注:我将事件直接写在MasterPage中。
不知道在哪儿出了问题。。。 --------------------编程问答-------------------- 不过,我有一点不同,我是将 主题名 放在session变量中 --------------------编程问答-------------------- session是很容易丢的,所以用cookie,如果用户把cookie关了,你可以用 Profile,但是有点犯不上 --------------------编程问答-------------------- 期待大家的指正。。。 --------------------编程问答--------------------
引用 6 楼 phil999 的回复:
session是很容易丢的,所以用cookie,如果用户把cookie关了,你可以用 Profile,但是有点犯不上

恩,挺好的建议。
不过,我还是不明白,Session怎么不行!是我欠考虑,还是这样行不通? --------------------编程问答-------------------- void Page_PreInit(Object sender, EventArgs e) 
    { 
        string theme=""; 
        if (Request.QueryString["theme"] == null) 
        { 
            theme = "Red"; 
        } 
        else 
        { 
            theme = Request.QueryString["theme"]; 
        } 
        Page.Theme = theme; 
        ListItem item = DropDownList1.Items.FindByValue(theme); 
        if (item != null) 
        { 
            item.Selected = true; 
        } 
    } 
JS修改CSS样式
cookie保存 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 在每个页面的Page_PreInit事件中写入如下:(用Cookies)
    private void PreInit(object sender, EventArgs e)
    {
        if(Request.Cookies["myTheme"] != null)
            Page.Theme = Request.Cookies["myTheme"].value.ToString();
    }


Imagebuttom1的click事件下设置:
Response.Cookies["myTheme"].Value = "SkinFile1";

Imagebuttom2的click事件下设置:
Response.Cookies["myTheme"].Value = "SkinFile2";
--------------------编程问答-------------------- 说实话,现在做网页还没有用过Cookies,并且没有用过主题。。。。 --------------------编程问答-------------------- 写一个基类 BasePage继承Page
void Page_PreInit(object sender, EventArgs e)
{
  string ThemeName = Request["thename"];
  if (ThemeName != null)
  {
    Page.Theme = ThemeName;
  }
}
其它网页 继承BasePage这们就可以达到一改全站都改的目的。

或者
你的全站点都用MasterPage那么在

MasterPage里写

void Page_PreInit(object sender, EventArgs e)
{
  string ThemeName = Request["thename"];
  if (ThemeName != null)
  {
    Page.Theme = ThemeName;
  }
}
也可以的 --------------------编程问答-------------------- 首先给大家道个歉,由于前一段时间学业太忙,没时间回复大家。然后,要多谢大家给我出了这么多的建议。 --------------------编程问答--------------------
引用 15 楼 wonderfuly 的回复:
写一个基类 BasePage继承Page
void Page_PreInit(object sender, EventArgs e)
{
  string ThemeName = Request["thename"];
  if (ThemeName != null)
  {
  Page.Theme = ThemeName;
  }
}
其它网页 继承BasePage这们就可以……

还是上面的问题,现在出现这么一个问题:在母版页中采用上面的方法不好使,但是其他普通.aspx页能用,希望大家给我支招。谢谢!!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,