Javascript 动态更改CSS文件

Javascript 动态更改CSS文件,javascript,.net,asp.net,css,vb.net,Javascript,.net,Asp.net,Css,Vb.net,我有一个webdev问题 我有近10000个服务器端页面,它们都使用相同的样式表。我已经创建了一个新的服务器端页面,它就像一个动态菜单系统,可以帮助您快速方便地从现有的10000个页面中找到特定的页面 问题是,如果使用旧的菜单系统以旧的方式访问服务器端页面,它们应该保留旧的样式表。但是,如果通过新的菜单系统访问它们,则应使用新的刷新样式表 编辑10000页似乎不是一个好的选择。解决此问题的最佳方法是什么?将样式表放在app_themes文件夹中,并在web.config中进行设置。然后你可以在两

我有一个webdev问题

我有近10000个服务器端页面,它们都使用相同的样式表。我已经创建了一个新的服务器端页面,它就像一个动态菜单系统,可以帮助您快速方便地从现有的10000个页面中找到特定的页面

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


编辑10000页似乎不是一个好的选择。解决此问题的最佳方法是什么?

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

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

2:在web.config中设置或

3:捕获要更改的每个页面的页面初始化(或母版页和许多页面都有一个基本页面类并覆盖页面初始化),然后将页面.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"]);
  }

希望这有助于sire

如果您无法编写一些全局服务器端代码,也无法为所有10000页创建全局模板,那么我的第一个想法是基于特定的URL参数对CSS文件进行URL重写。因此,如果提交此参数,您可以获得第二个CSS文件,如果未提交,则重写将提供原始CSS文件。

通常情况下,我会建议URL重写,以便将对旧样式的请求重定向到新样式。(IIS可以做到这一点,例如:)

以下页面可能对您有用


我在谷歌上搜索iis6的mod_重写风格选项,结果突然出现了。这是从2008年开始的,但似乎至少与您在iis6的上下文中所寻找的内容差不多,我希望它能够允许您设置某种访问规则,可以将其中一个域上的客户端重定向到您指定的一些新css文件夹/资产。

如果是php,我将在所有页面中创建一个文件和inlcude,然后一页中的变化反映在所有页面中。嗨,奥希罗瓦宁。你能澄清一下吗。新旧页面是否按照不同的规格构建。例如,他们是否使用不同的模板类型等,所有这些页面是否使用相同的模板/母版页。此外,它们是否都是从同一个域提供的(新旧的)?对不起,我无法从这个问题中得到你想要的。你有这两种页面类型的例子吗。祝你好运如何找到请求是来自旧菜单还是新菜单menu@BizNuge. 旧的页面是用.NET1创建的,所以我认为那时不存在母版页。新菜单是用.net 3.5创建的。它们都来自同一个服务器,但域名有点不同,例如mysite1.com有10000页加上旧菜单,mysite2.com有新菜单。在这种情况下,您能否不简单地为每个域提供不同的css主题(对不起,我实际上使用Java/PHP,所以对.NET web服务的了解有限)。我在这里假设您可以访问要编辑的模板,并且您可能相对地引用了这个css(老实说,这可能是太多的假设)。另一个解决方案,可能是简单地用一些JS嗅探域位置,然后在此基础上包含任何您需要的css(尽管,同样,我假设您对这里的模板有一些控制,但您可能没有)。请您提供关于这两个选项的更多详细信息。可能是指向documentation?的链接,包括在web.config+中设置它们并解释它们的优先级。我认为这可能是一种方法。因此,基本上,我可以使用主题来根据请求网页的方式更改样式表,即,如果10000页中的1页是由old_domain.com/menu.aspx请求的,那么10000页中的1页是由new_domain.com/menu.aspx请求的,那么10000页中的1页是由newstyle.css请求的。“那能做到吗?”丹尼尔·卡塞利,谢谢你一步一步地做。问题1,我是在旧域还是在新域上创建app_themes文件夹?呃,很抱歉,我不明白你的意思,你是说在visual studio环境中?我可以编写全局服务器端代码,但如何将其链接到旧的10000页?此外,如果我使用url重写,我如何让旧的10000页识别url中的更改,而不必编辑这10000页中的每一页?如果我使用url重写,我如何让旧的10000页识别url中的更改,而不必编辑这10000页中的每一页?如果旧文件是say\menu.css,新的是\newmenu.css,您将\menu.css的请求重写为\newmenu.css,说明和信息在我添加的链接上,例如,IIS还有其他链接。这就像搜索并用新名称替换文件一样。因此,基本上只是为了确认,我可以使用iis url重写规则创建一个规则,该规则表示,如果使用旧菜单访问10000页,则使用旧样式表,但如果使用新菜单访问10000页,则使用新样式表,尽管两个菜单和10000页都在同一台服务器上,但新菜单有不同的域名。?我们使用的是iis6,显然iis url重写是从iis7开始的?如果你仔细阅读页面,我发现例如。