我是这样让asp.net页面换肤的

从昨天晚上就开始鼓捣给页面换皮肤了,看了天轰穿的视频里的换肤,看这他只是通过对各个控件来进行改变样式,而我需要的是对所有的页面以及标题进行控制,所以就开始自己找办法。

我觉得这个程序设计就像是搭积木,你这样可以,那样也可以,只有你有想法总是会达到预期的效果的。就看你有没有想法了。

好了,步入正题。

因为每个页面都要用到一个公共的css样式控制,common.css文件。于是想从这里开始控制页面的背景色以及标题颜色。事实证明应该这样做。我把common.css中的关键的部分提取出来,放到theme文件中。如下:

body

{

background-color:#fff;

FILTER:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#A17D6D,endColorStr=#FFFFFF);

}

/*这里是注销区域的背景色*/

#table_name

{

background-color :#753B25;

}

h4 /*设置所有的标题样式*/

{

margin-top:0px;

color :#703719;

background-color :#F7F2EC;

}

将这部分代码放到不同的主题中:

clip_image002

通过对颜色值的更改这样就可以实现了读取不同的主题时页面背景色以及标题都可以进行改变。

首先我们这个系统的所有的页面都是通过模板页生成的,也就是我可以通过控制模板页的样式来改变所有页面的样式。刚开始就是这么想的,不过发现母版页中没有使用主题(Theme)这一项,于是改变方向。

普通的页面可以设定theme,于是想可以通过这样的方式来完成页面的换肤效果。不过这么多的页面我总不能每个页面都写这么一句吧,这样也太乏味了。。。(不过最后我还是这么干的)

于是问了下百度,说可以通过配置文件的system.web节点下的pages 来设定所有页面的样式,设置就可以设置所有页面为蓝色主题。到此为止呢,设定主题算是完了。不过还需要动态改变呢。

既然是动态改变了,那么pages节中的theme值应该是在程序运行时可以改变的。于是找怎么在asp.net操作xml文件。

最后有了如下解决方案:

xmlDoc.Load(Server.MapPath("Web.config"));

XmlNodeList nodeList = xmlDoc.SelectSingleNode("configuration").ChildNodes;//获取configuration节点的所有子节点

foreach (XmlNode xn in nodeList)//遍历所有子节点

{

if (xn.Name == "system.web")

{

XmlNodeList xmlList = xn.SelectNodes("pages");

foreach (XmlNode item in xmlList)

{

xe = (XmlElement)item;

//设置主题为当前下拉列表选中的主题

xe.SetAttribute("theme", ddlColor.SelectedValue);

}

}

}

xmlDoc.Save(Server.MapPath("Web.config"));

这样的话就可以读取并且修改配置节中的theme值了,本来认为这样就可以了。不过测试后发现不行。因为你每次修改配置文件之后系统都需要重新登录(也就是重新启动)才行。这是为什么呢?应该是配置文件的作用,系统在运行时需要这个文件。

既然这样不行的话,那我不妨自己建立一个xml文件。这样就和系统没关系了。于是动手新建一个,既然读写文件的方法都写好了,也就不改了。新建xml文件如下:

 

 

 

 

 

 

这样就可以动态读取改变都没有问题。但是问题又来了。从这里并不能够设置所有的页面的主题。所有又回到老路,把所有的页面中都添加一段读取这个xml文件的代码,并且需要注意一下,在页面中设置主题时需要把对主题的设置放在protected void Page_PreInit(object sender,EventArgs e)方法中。应该是页面预处理时加载主题。

也就就ok了,在系统配置页面里动态更改配置节点的theme值。其他页面加载时都会读取。不过这样还是不好的,因为开发的是b/s系统,用户有很多因此单单的修改一个xml文件不能让所有用户都得到自己想要的效果,因此下一步要做的就是将theme值放入数据库中。这样每一个用户都可以对自己的页面进行配置。

到此也就over了。

下面看一下效果:

clip_image004

clip_image006

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值