用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
21aspnet的公告
<img src=" http://p.blog.csdn.net/images/p_blog_csdn_net/21aspnet/MVP1.jpg"/>
文章分类
.NET 工具
C# to VB.NET Translator
Fiddler
FxCop代码标准检测工具
httpwatch
ieinspector
IETester
Memcached
Multiple IE
Nbear
Nunit单元测试
pushlets
Tab集合
VB.NET and C# Comparison
VB.NET 代码转为C#
网站国际排名查询工具
.NET 下载/讲座视频
chinaitlab
enfull
Visual Studio 2005 的工具
wrox出版社书刊代码下载
中国台湾微软MSDN
中文MSDN WebCast网络广播全部下载列表
源码之家
.NET 优秀Blog
cathsfz
cnkiminzhuhu
cuike519的专栏
dahuzizyd的专栏
DotNet技术交流乐园
DotNet男孩社区
dudu
gztoby
IT Crazy
Kemin's booootLog
kimyoo(RSS)
Leoo2sk
LoveCherry
MSDN每日追踪
Nios.Org
phphot
Teddy's Knowledge Base
Think Different and Think More
Visual Studio.net专栏
WCF Tools 中国研发团队的专栏
体验ASP.NET 2.0新特性
刘洪峰
天轰穿
孟宪会
宝玉
开心就好【博客堂】
张子阳
彭斌
思归呓语
木子 [I am praying]
李会军
李洪根【VB】
永春阁
汉飞扬【Vista】
涂曙光【SharePoint】
理想&美人(RSS)
维生素C.net
网际浪子
葛涵涛
蒋涛
蝈蝈俊.net[csdn版]
蝈蝈俊.net[joycode版]
谭振林
邹建
阿不
阿良.NET
雨痕
風語·深蓝
鸟食轩(RSS)
黄昕
.NET 优秀网站
.NET 官方网www.asp.net
.NET 藏经阁 - 知识分享
.NET开发资源精华收【不得不看】
ASP .NET FAQ
asp101
aspfree
C#开源资源
C#开源资源大全
C#语言在线帮助网站
codeproject
infragistics
Internet Explorer 开发者资源
iwebsms
MSDN Web/服务
MSDN中文
Scott Guthrie(ASP.NET之父)
SharePoint爱好者
VS2005.com
Wintellect
www.411asp.net
世界上最大的Open Source项目在线网站
中国C#技术学习中心
官方ASP.NET入门教程
微软中文新闻组
微软官方.NET指导站点
最好的索引网站
正则
邮件发送常见问题解决方法
Ajax链接
AJAX载入等待图片在线生成
bindows(RSS)
DHTML menu4作者主页(RSS)
Dhtmlgoodies
Dynamicdrive
EXT类库
json
Tabs
Tabs
Tabs
Yahoo YUI
大量DHTML代码
无忧脚本 - JavaScript
索漫
综合开发技术网
CSDN
IBM中文Web 项目资源中心
W3C技术在中国
中国BS网
中文C#技术站
天新网
天极网开发频道
太平洋电脑网web开发
看雪
统一教学网
编程爱好者
网页设计师:web标准教程及推广,网站重构
老猫理想
蓝色理想
豆豆技术网
赛迪网
存档

原创  Asp.Net下通过切换CSS换皮肤 收藏

换皮肤的方式有很多种,最简单的通常就是切换页面CSS,而CSS通常写在外部CSS文件里。那么切换css其实就是更换html里的link href路径。我在网上搜索了下。一般有两种方式:

1,在页面放一个holder控件。然后用编程方式把当前用户的风格css link写入页面。
2,通过反射机制,逐个控件设置css样式。
上面两种方式都挺麻烦的,
第一种需要在每个页面上放一个holder控件。类似的做法还有把link标签加runat=server的做法。页面多了,都比较麻烦。
第二种不用考虑了。性能编程效率上问题多多。

记得以前在学习DNN的时候,在他里面发现了一种修改form里默认的action地址的方式,直接参考下。还不错:
直接重写Render事件
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            StringWriter sw = new StringWriter() ;
            HtmlTextWriter htmlWriter = new HtmlTextWriter(sw) ;

            base.Render(htmlWriter) ;
            //当前用户选择的风格css
            string css = "<link href=\"css url\" rel=\"stylesheet\" type=\"text/css\">" ;

            string html = sw.ToString() ;
            int startPoint = html.IndexOf("</head>", StringComparison.CurrentCultureIgnoreCase);
            if (startPoint > 0)
            {
                html = html.Insert(startPoint, css);
            }

            writer.Write(html) ;
        }
把这个放在每个页面的基类PageBase里。那就方便多了。
当然,如果不想在让每个page都继承自定义的基类的方式,那也可以通过在HttpModule里写。也很方便.
一处写好,页页受用呀。

发表于 @ 2009年02月02日 11:23:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:ASP.NET的(HttpModule,HttpHandler) | 新一篇:ASP.NET 2.0 Internet安全之参考实现

  • 发表评论
  • 评论内容:
  •  
Copyright © 21aspnet
Powered by CSDN Blog