2011-02-25 8 views
1

現在、多くのクライアントが同じコードベースを共有しているが、そのサイトに独自の「ルック&フィール」を持つマルチテナントWebサイトを設計中ですこれは新しいものではありませんが、ASP.NETとMVC3を使ってソリューションを実装する最善の方法についてのアイディアを探しています。ASP.net MVC3を使用してクライアントごとにラベルとスタティックテキストを変更する

私が今見ている主なことは、クライアントごとのページのラベルと静的部分のCSSスタイルシートとテキストを変更する方法です。だから、これはローカライゼーションのようなもので、@ FirstNameLabelのようなRazorテンプレートに文字列を置いて、実行時にその変数のログインしているクライアントの特定の値の設定を取得することになります。

私はこれをデータベースで実装できると知っていますが、.NETでこれを行うには巧妙な方法がないことを確認しています(私は数年前からJavaの世界にいました)。 ResourceManagerでローカリゼーションやグローバリゼーションのバリエーションを使用する可能性はあるようですが、文化に基づいていない例は見つかりませんでしたが、現時点では欲しくない/必要としない例があります。

どのようなアイデアも大幅に改善されました。

+0

はこちら

チェックあなたはこの質問への解決策を見つけたことがありますか? –

答えて

-1

カスタムVirtualPathProviderクラスを使用して、いくつかのユーザー設定に基づいて異なるビュー(URLは同じですが)を配信できます。そうすれば、あなたは異なるテキスト、スタイルシート、などが含まれて異なる見解を持っている可能性があり...詳細ASP.NET MVC and virtual views

+0

この方法は、実際のマルチテナント環境で実行可能な作業よりも多くの作業を作成する可能性があります。新しいクライアントを追加しても、新しいビューを作成して配備する必要はありません。これはまた、 "ページ"が変更されたときにいつでもすべてのビューを更新する必要があるため、メンテナンスを悪夢にさせる。 – mikeschuld

+0

@mikeschuldより良い提案がありましたか?保存場所はファイル、データベース、クラウドストレージ、または上記のすべての場所にすることができます。そのため、各テナントは同じ場所から読み取ることができますが、一部の小さな部分的なビューは上書きすることができます(ロゴ、タイトルなど)異なる場所から。 VirtualPathProviderは、ビューの通常の場所から読み取ることができ、特定のファイルの場所が傍受され、カスタムユーザーのコンテンツが読み込まれる可能性があります。だから、各顧客がそれぞれ独自のビューセットを持っていなければならないというあなたの前提は、私​​が暗示していたものではありません。私は片道しか提供していませんでした。 –

関連する問題