0

私は、単一のコードベースと単一のデータベース(テナントに基づくデータベースの柔軟性は必要ありません)を持ち、クライアントに基づいて異なるプレゼンテーションを行うエンタープライズWebアプリケーションの設計に取り組んでいます。同じコアロジックとスケルトンを使用する3〜4つの異なるクライアント(Webサイト)がありますが、クライアント固有のヘッダー、フッター、画像、cssなどがあります。マルチプレゼンテーションソリューションと本格的なマルチテナンシーが必要です。私がオンラインで見たサンプルのほとんどは、本格的なマルチテナンシーを対象としています。複雑なものは必要ないと思います。私の場合に非常に役立ついくつかの情報をここで見つけました:

http://jasonjano.wordpress.com/2010/02/22/multi-presentation-websites-for-c/

上記のリンクで提案されているように、web.configファイルの以下の構成に従って要求されたドメインに基づいて一意のIDを識別して取得できます。

<configuration>
    <appSettings>
        <add key="MySite1.MyDomain.com" value="1"/>
        <add key="www.MySite1.MyDomain.com" value="1"/>
        <add key="MySite2.MyDomain.com" value="2"/>
        <add key="localhost" value="1"/>
    </appSettings>
</configuration>

この後、IDに基づいてマスターページ、画像、CSSファイルを動的に選択するにはどうすればよいですか?また、データベースから「CustomAppSettings」クラスにデータを入力します(記事で提案されているように)。異なるレイヤーでアクセスできるように静的にすることをお勧めしますか?それ以外の場合、推奨される方法は何ですか?

あなたの提案をいただければ幸いです。

4

2 に答える 2

0

これは、着信要求から「テナント」を検出するのに役立つ場合があります。

別の MasterPage ファイルを動的に選択するのではなく、Html Helpers / Patrial Views (またはその両方) を介して別のコンテンツを MasterPage にレンダリングします。

于 2010-10-07T03:18:32.847 に答える
0

この記事を少しでも活用していただければ幸いです。答えについては、通常、system.web.ui.page を継承するカスタム ページ クラスを使用します。カスタム ページ クラスの page_init では、マスター ページなどを設定できます。

(疑似コード)のようなもの

class MyCustomPage : System.Web.UI.Page
{
public void Page_Init(object sender, eventargs e) {
this.MasterPageFile = CurrentSettings.MasterPageFile <Or however you are getting your masterpage file>
}

次に、ページで、System.Web.UI.Page の代わりに MyCustomPage クラスから継承します。

幸運を

于 2010-10-07T02:56:15.917 に答える