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

时间:2008-10-22 12:57:48

标签: asp.net

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

域将是子域类型系统,因此:projectname.clientname.com,projectname.clientname.com等,其中客户端名称是我们将系统销售给的公司。

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

我已经尝试了几种方法来实现这一点,使用stylesheettheme(不需要皮肤按钮btw),但我在.NET的系统dll中不断出现堆栈溢出。

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

5 个答案:

答案 0 :(得分:1)

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

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

要执行此操作,您必须在页面生命周期的OnPreInit阶段设置页面的MasterPageFile属性。 (之后不允许这样做,因为主人已经加载了。)

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

答案 1 :(得分:0)

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

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

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

/* Are you doing that? */

是否有单独的网站实例?

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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