如何根据域名加载不同的主题/css

问题描述 投票:0回答:5

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

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

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

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

实现这一目标的有效方法是什么?

asp.net
5个回答
1
投票

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

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

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

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


0
投票

使用以下信息思考更改代码中的主题。检查 HTTP_REFERER 以查看正在请求哪个域,并使用 SELECT CASE 更改为您喜欢的该域的主题。

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


0
投票

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

我想以编程方式设置主题,因为它是条件绑定的,所以我使用 page_preinit。


0
投票

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


0
投票
/* Do you have a folder in "Themes" or "APP_Themes" called Savillis? */

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

在页面级别,您可以在页面指令(aspx)或PreInit(代码隐藏)中设置主题,也可以在web.config中设置默认主题。 (您也可以设置全局主题,但这通常不使用。

/* Are you doing that? */

是否有单独的网站实例?

© www.soinside.com 2019 - 2024. All rights reserved.