【问题标题】:How to have a different theme/css load up depending on domain name如何根据域名加载不同的主题/css
【发布时间】:2008-10-22 12:57:47
【问题描述】:

我有一个网站,它将出售给不同的客户,但出于维护原因,我们将保留一个代码库。所以这意味着这个代码库必须足够动态,才能有不同的样式等等,具体取决于客户端。

域将是一个子域类型的系统,例如:projectname.clientname.com、projectname.clientname.com 等等,其中客户名称是我们将系统出售给的公司。

我想要做的是根据域加载不同的主题。所以我可能有 ecards.savills.com,为此,我在 Themes 中有一个名为 Savills 的文件夹,在该文件夹中名为 Savills,一个 .CSS 文件,我想加载它。我一直在玩请求对象,但没有运气。

我已经尝试了几种方法来实现这一点,使用样式表主题(不需要皮肤按钮顺便说一句),但我不断在 .NET 的系统 dll 中遇到堆栈溢出。

什么是实现这一目标的可靠方法?

【问题讨论】:

标签: asp.net


【解决方案1】:

您可以使用不同的母版页来完成此操作。

针对一个母版页(或一组母版)编写默认值,然后在运行时根据主机域以编程方式更改母版页。

为此,您必须在页面生命周期的 OnPreInit 阶段设置页面的 MasterPageFile 属性。 (之后就不允许了,因为master已经加载了。)

所选母版页可以有截然不同的布局并引用完全独立的 CSS 文件。

【讨论】:

    【解决方案2】:

    使用以下想法中的信息来更改代码中的主题。检查 HTTP_REFERER 以查看正在请求哪个域,并使用 SELECT CASE 更改为该域的首选主题。

    http://msdn.microsoft.com/en-us/library/tx35bd89.aspx

    【讨论】:

      【解决方案3】:

      我的根目录中有 APP_THEMES,然后我向其中添加了一个主题(这是一个我重命名的文件夹)。

      我想根据条件以编程方式设置主题,所以我使用 page_preinit。

      【讨论】:

        【解决方案4】:

        编写一个 HttpModule 来分配特定领域的主题。就像 UrlRewrite httpmodule 一样。如果您不知道如何创建 httpmodule,可以在 msdn 上获取教程。

        【讨论】:

          【解决方案5】:
          /* Do you have a folder in "Themes" or "APP_Themes" called Savillis? */
          

          当您为页面指定主题时,将加载该主题文件夹中的所有样式表。它们将按字母顺序加载,因此请注意顺序。

          在页面级别,您可以在 Page 指令 (aspx) 或 PreInit (codebehind) 中设置主题,也可以在 web.config 中设置默认主题。 (你也可以设置一个全局主题,但通常不使用。

          /* Are you doing that? */
          

          是否有单独的网站实例?

          【讨论】:

            猜你喜欢
            • 2019-02-17
            • 2019-07-18
            • 1970-01-01
            • 2015-05-25
            • 2017-06-13
            • 1970-01-01
            • 1970-01-01
            • 2017-06-15
            • 2011-10-06
            相关资源
            最近更新 更多