2011-12-14 76 views
1

我最近創建了一個簡單的asp.net web應用程序並託管在我公司的服務器中。我需要爲幾個客戶端提供相同的應用程序,而且我必須根據客戶端更改標籤和圖像。例如:「www.mycompany.com/mywebapp/client1」,「www.mycompany.com/mywebapp/client2」,「www.mycompany.com/mywebapp/client3」不同的外觀相同的asp.net web應用程序

但是邏輯和數據庫是一樣的。我怎麼能這樣做?謝謝。

+0

那麼你需要一個數據庫表,其中列出所有客戶端和其他表,並將clientID作爲所需的外鍵和自定義值。它聽起來如何?事實上,在很多情況下,根據數據量和流量,您會爲每個客戶端選擇一個分離的數據庫,以便您可以分別在不同的數據庫服務器上分配負載並進行備份/恢復/修改。 – 2011-12-14 17:05:54

+0

簡單和更直接的方法是爲每個網站創建不同的CSS文件,在服務器端重新創建標籤 – 2011-12-14 17:22:36

回答

0

如果它是.Net網絡應用程序或.Net網站,您可以使用MasterPages和用戶控件。這將允許您將功能限制爲用戶控件以及母版頁中處理的所有樣式/佈局考慮事項。

如果您選擇使用MVC,那麼您將使用佈局頁面來實現類似的目的,並使用部分視圖代替usercontrols。

在問題的情況下,每個子文件夾將擁有自己的母版頁:

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

和內頁也只會在用戶控件的母版頁定義和包容。然後,您的用戶控件會在一個公共文件夾共同坐如:

mywebapp/sharedcontrols/login.ascx 
mywebapp/sharedcontrols/clientinfodisplay.ascx 
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文件。

相關問題