相同的asp.net Web应用程序具有不同的外观

时间:2011-12-14 17:02:09

标签: asp.net web-applications

我最近创建了一个简单的asp.net webapplication并托管在我公司的服务器中。我需要为几个客户端使用相同的应用程序,我必须根据客户端更改标签和图像。类似于:“www.mycompany.com/mywebapp/client1”,“www.mycompany.com/mywebapp/client2”,“www.mycompany.com/mywebapp/client3”

但逻辑和数据库是一样的。我怎么能这样做?感谢。

2 个答案:

答案 0 :(得分:0)

如果是.Net网络应用程序或.Net网站,您将使用MasterPages和用户控件。这将允许您将功能限制在用户控件以及母版页中处理的所有样式/布局注意事项。

如果您选择使用MVC,您将使用布局页面用于类似目的,使用部分视图代替用户控件。

在问题的情况下,每个子文件夹都有自己的母版页:

mywebapp/client1/client1.master
mywebapp/client2/client2.master
mywebapp/client3/client3.master

并且里面的页面只有主页面定义和包含用户控件。然后,您的用户控件将位于公共公用文件夹中,例如:

mywebapp/sharedcontrols/login.ascx
mywebapp/sharedcontrols/clientinfodisplay.ascx

答案 1 :(得分:0)

我们的做法略有不同。在我们的例子中,DNS名称是client1.mycompany.com

所有DNS名称都指向IIS下完全相同的“网站”。在我们的母版页中,我们检测子域(即:client1)并查找它的内部客户端ID。

另外,我们有一个“皮肤”目录,它保存客户端的自定义css和图像。例如/Skins/34/custom.css或/Skins/34/logo.png

回到母版页,我们会注入相应的CSS文件,其中包含满足客户外观所需的覆盖。

例如,在我们的默认css文件中,我们可能有如下定义:

#customerLogo { background-image: url('/images/default.png');

然后在客户特定的css文件中,我们会有类似的内容:

#customerLogo { background-image: url('/skins/34/logo.png') !important;

这允许我们的自定义文件覆盖默认的css类定义。此外,它允许我们只覆盖需要它的特定元素,而不是每个客户端都有一个完整的css文件。

相关问题