动态更改CSS文件

时间:2011-06-01 09:39:24

标签: javascript .net asp.net css vb.net

我有一个webdev问题

我有接近10,000个服务器端页面,所有这些都使用相同的样式表。我创建了一个新的服务器端页面,就像一个动态菜单系统,可以帮助您快速,轻松地从现有的10,000页中查找特定页面。

问题是,如果使用旧菜单系统以旧方式访问服务器端页面,则应保留旧样式表。但是,如果通过新菜单系统访问它们,则应使用新刷新的样式表。

编辑10,000个页面似乎不是一个好选择。解决这个问题的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

将样式表放在app_themes文件夹中,并在web.config中进行设置。然后你可以快速地在两者之间进行切换。或者你可以在pre_init事件的代码中设置它

编辑: 1:添加和app_themes文件夹,创建两个带主题名称的子文件夹(例如,默认或蓝色等)

2:在web.config中设置或

3:捕获您希望更改的每个页面的page_init(或者对于母版页和许多页面具有基页类并覆盖page_init)并将Page.Theme =设置为您想要的主题。最好的关闭会话状态,从我可以告诉。所以像这样:

 if (Session["Theme"] == null)
  {
    //the string is the theme as per the cleaners default
    string chosenTheme = selectedTheme();
    Session.Add("Theme", chosenTheme);
    Page.Theme = ((string)Session["Theme"]);
  }
  //if the page is reloaded.
  else
  {
    Page.Theme = ((string)Session["Theme"]);
  }

希望这有助于父亲

答案 1 :(得分:0)

如果您不能编写一些全局服务器端代码,也没有全部模板用于所有10.000页面,我的第一个想法是根据特定的url参数为CSS文件设置URL-Rewrite。因此,如果提交此参数,您可以获得第二个CSS文件,如果不是,则重写将提供原始css文件。

答案 2 :(得分:0)

通常我建议使用URL重写,以便将旧样式的请求重定向到new。 (IIS可以这样做,例如:http://www.iis.net/download/URLRewrite

答案 3 :(得分:0)

以下页面可能对您有用Oshirowanen。

http://blogs.msdn.com/b/dotnetinterop/archive/2008/06/18/rewriting-urls-on-iis5-iis6-or-iis7-mod-rewrite-on-iis.aspx

我搜索了iis6的mod_rewrite样式选项,然后出现了这个问题。这是从2008年开始,但似乎至少在你正在寻找的iis6环境中,我希望,允许你设置某种访问规则,可以将其中一个域上的客户端重定向到某些域您指定的新css文件夹/资产。