none
请教动态修改整站StyleSheetTheme的方法 RRS feed

  • 问题

  • 现在我的解决方案是自己写一个PageBase的基类,重写其中的StyleSheetTheme属性,然后让每个页面继承这个PageBase基类,成功实现,但是这样的话需要将每个页面的继承基类都改为此PageBase类而不是系统默认的Page类,工作量大.
    不知道有没有好的方法,再改动最少的代码的前提下实现该功能.谢谢

    这里的需求是通过程序动态修改整站主题,比如每个用户在数据库中有个对应的ThemeID字段,根据这个字段的值来判断当前用户使用哪个主题.
    • 已编辑 rewalax 2009年5月5日 12:39
    2009年5月5日 11:08

答案

  • 你可以找个比较好的文本编辑器,比如EditPlus、EmEditor等,一次性打开你所有的页面.cs文件,或者几十个几十个的打开,然后批量替换你的页面Page基类为你的PageBase类,然后批量保存就行了。打开、替换、保存的速度不会太慢的。
    唯一注意的是,你替换的关键字一定要准确,我觉得以“: System.Web.UI.Page”应该是比较准确的。

    理解的越多,需要记忆的就越少
    • 已标记为答案 rewalax 2009年5月6日 2:07
    2009年5月5日 13:28
    版主
  • 配置文件也可以动态修改的。
    如果文件很多的话,除了替换,好像也没有更好的方法。
    【孟子E章】
    • 已标记为答案 rewalax 2009年5月6日 2:07
    2009年5月5日 15:12
    版主

全部回复

  • 其实你使用配置文件就可以了
     <configuration>
        <system.web>
            <pages styleSheetTheme="Themename" />
        </system.web>
    </configuration>



    对网站应用主题

    在应用程序的 Web.config 文件中,将 <pages> 元素设置为全局主题或页面主题的主题名称,如下面的示例所示: 
    
    <configuration>
        <system.web>
            <pages theme="ThemeName" />
        </system.web>
    </configuration>

    说明: 如果应用程序主题与全局应用程序主题同名,则页面主题优先。 要将主题设置为样式表主题并作为本地控件设置的从属设置,应改为设置 styleSheetTheme 属性: <configuration> <system.web> <pages styleSheetTheme="Themename" /> </system.web> </configuration>

    Web.config 文件中的主题设置会应用于该应用程序中的所有 ASP.NET 网页。Web.config 文件中的主题设置遵循常规的配置层次结构约定。例如,要仅对一部分页应用某主题,可以将这些页与它们自己的 Web.config 文件放在一个文件夹中,或者在根 Web.config 文件中创建一个 <location> 元素以指定文件夹。

    【孟子E章】
    2009年5月5日 11:22
    版主
  • 不好意思,您误会我的意思了,我是说在程序中动态修改,比如每个用户在数据库中有个对应的ThemeID字段,根据这个字段的值来判断当前用户使用哪个主题.
    谢谢您的答复
    2009年5月5日 12:39
  • 你可以找个比较好的文本编辑器,比如EditPlus、EmEditor等,一次性打开你所有的页面.cs文件,或者几十个几十个的打开,然后批量替换你的页面Page基类为你的PageBase类,然后批量保存就行了。打开、替换、保存的速度不会太慢的。
    唯一注意的是,你替换的关键字一定要准确,我觉得以“: System.Web.UI.Page”应该是比较准确的。

    理解的越多,需要记忆的就越少
    • 已标记为答案 rewalax 2009年5月6日 2:07
    2009年5月5日 13:28
    版主
  • 这个只是个折中的做法,不知道在程序方面有没有好点的办法?
    您的开发经验丰富,不知道您在开发中遇到整站动态修改主题时是怎么解决的?谢谢

    2009年5月5日 15:01
  • 配置文件也可以动态修改的。
    如果文件很多的话,除了替换,好像也没有更好的方法。
    【孟子E章】
    • 已标记为答案 rewalax 2009年5月6日 2:07
    2009年5月5日 15:12
    版主
  • 不是吧,网站的主题是可以控制载入的直接放到数据库里
    在每个页面的页面页面准备载入的时候可以控制这个页面要采用的主题
    www.wkfield.cn
    2009年5月8日 1:04
  • 你好,我的意思就是你刚刚说的更改每个页面继承的基类,在这个新类里重写stylesheettheme方法. 我是问有没有更简单的做法,不要修改每个页面基类
    2009年5月8日 2:04