2011-12-14 5 views
1

私は最近、単純なasp.net webapplicationを作成し、私の会社のサーバーでホストしました。私はいくつかのクライアントで同じアプリケーションが必要です。クライアントに合わせてラベルとイメージを変更するだけです。 "www.mycompany.com/mywebapp/client1"、 "www.mycompany.com/mywebapp/client2"、 "www.mycompany.com/mywebapp/client3"異なる外観を持つ同じasp.net Webアプリケーション

しかし、ロジックとデータベースは同じです。どうすればこのことができますか?ありがとう。

+0

うまくいくと、すべてのクライアントがリストされたデータベーステーブルと、外部キーとしてのclientIDと、必要に応じてカスタム値を持つ他のテーブルが必要になります。どのように聞こえる?実際には多くの場合、データ量とトラフィックに応じて、各クライアントごとに別々のデータベースを選択し、別々のDBサーバーに負荷を分散し、別々にバックアップ/リストア/変更することができます。 –

+0

簡単でより直接的な方法は、各Webサイトごとに異なるCSSファイルを作成し、サーバー側にラベルを再作成することです。 –

答えて

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

マスターページを使用すると、同じページをクロスクライアントで再利用するのは難しいと思います。 –

+0

@エムマヌエルN:そうではありません。私はいつもそれをする。コントロールがスタイルで管理され、スタイルが一貫している限り、それは簡単です。それはかなり稀ですが、私のユーザコントロールがマイナーなものを変更するための特定のコードを持たなければならない場合がありますが、実装が最も簡単です。 –

0

これは少し異なります。私たちの場合、DNS名はclient1.mycompany.com

です。すべてのDNS名は、IISのまったく同じ「Webサイト」で示されています。私たちのマスターページでは、サブドメイン(例:client1)を検出し、その内部クライアントIDを検索します。

また、私たちはクライアントのカスタムCSSとイメージを保持する "skins"ディレクトリを持っています。例:/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ファイルを持たなくても、必要な特定の要素だけをオーバーライドすることができます。