日期:2014-05-19  浏览次数:20413 次

问一个比较简单的问题,关于主题皮肤的
我做了个网站,地址如下:

http://kydz1.host.isoidc.com/

问题是我在web.config里设置了皮肤

<pages   theme= "Gray "   />

然后编译,上传到服务器后,再修改web.config文件换一个皮肤,却总是变不过来,而我不编译上传到服务器,再修改web.config文件则可以正常换一个皮肤,但是我觉得编译后再上传一是访问时不用预编译了,首次访问会快一些,二是编译后可以保护代码。难道编译后再改web.config文件的皮肤都无效了吗?

------解决方案--------------------
楼主:在vs2005中发布以后,再去改theme是无效的,不过在vs2005 sp1中可以解决此问题

请看:http://www.cnblogs.com/chy710/archive/2007/03/12/672420.html
------解决方案--------------------
没有看懂你最后一句话是什么意思。

如果你不编译,第一次访问某个Theme的时候skin文件要临时编译成dll然后才执行。而修改web.config的作用我猜不过是另网站应用程序“垮掉”,也就是同时使内存中装入的dll作废,新启动的应用程序重新装入新的dll。

你最后一句话中你自己给出的解释与实际情况正相反。实际上,预编译的同名dll在生产环境网站上(不是指在开发环境网站上)可能没有成功覆盖原来的dll,原来的皮肤还有效,而在声场环境上自动编译的dll则可以清楚原来同名dll的影响。

其实我比较信赖vs2005的“web网站”项目对页面每一次编译dll都生成不同文件名的做法,相对来说我不相信“web工程”项目的那种全都编译成固定名的dll文件做法。不过只要小心谨慎地检查你上传的dll,以及确保重新启动Web服务,这也就并不重要。

为页面更换皮肤,你应该在页面的PreInit事件中,从应用程序参数,或者当前登录用户的个人信息中,取得theme的名字,动态设置。动态的theme处理流程是不需要在更改某个页面的theme时去上传dll的,甚至同一aspx在不同用户访问、不同时候都可以各自展示不同的theme。

你那种写死到页面的方式,肯定会因为一个刻板而带来更大的刻板。