0

望ましい結果:

個別のプロジェクトとしての4つの顧客向けサイト4つのサイトすべてで使用される1セットの管理コード

私の現在の設定は4つのプロジェクトです:

  • モデル/エンティティのコア

  • リポジトリのデータ

  • コントローラー用のコントローラー

  • ビューのWeb

現在、Webプロジェクトには、管理者側と顧客側のビューが含まれています。それを管理プロジェクトと4つの「顧客」プロジェクトに分割したいと思います。

私はグーグルでウェブアプリからウェブアプリを参照することにほとんど成功していません。haacked.comのエリアについて読んだことがありますが、それは正しくないようです。マークアップのデバッグ/コーディング中に苦痛を伴うため、特にdllにビューを埋め込みたくありません。明らかに、コードの複数のコピーは必要ありません。

誰かがこれを行うための可能な方法を指摘または提案できますか?私は少し困惑しています。

4

1 に答える 1

1

プロジェクトを 4 つの Web プロジェクトに分割する理由が、顧客の見解が異なることである場合は、次のことを試してください。

1 つの webproject を持ち、異なるビューにサブフォルダーを使用します。

  • Views/Home/About.aspx (一致するサブフォルダーが見つからない場合に使用)
  • Views/Home/Customer1/About.aspx
  • Views/Home/Customer2/About.aspx

レンダリングするビューを決定するカスタム ビュー エンジンを使用できます。Web の各インストールには、web.config で定義された顧客があります。

public class MultiTennantWebFormViewEngine : WebFormViewEngine
{
  private static string[] LocalViewFormats = 

   new string[] {
       "~/Views/{1}/" +  ApplicationConfiguration.CustomerName + "/{0}.aspx",
    "~/Views/{1}/{0}.aspx",
    "~/Views/{1}/" + ApplicationConfiguration.CustomerName  +   "/{0}.ascx",
    "~/Views/{1}/{0}.ascx",
    "~/Views/Shared/{0}.aspx",
    "~/Views/Shared/{0}.ascx"
};

  public LocalizationWebFormViewEngine()
  {      
    base.ViewLocationFormats = LocalViewFormats;
     base.PartialViewLocationFormats = LocalViewFormats;
     base.MasterLocationFormats = new string[] {

          "~/Views/{1}/" +  ApplicationConfiguration.CustomerName  + "/{0}.master",
          "~/Views/{1}/{0}.master",
           "~/Views/Shared/"  +  ApplicationConfiguration.CustomerName  + "/{0}.master",
            "~/Views/Shared/{0}.master"
      };
}

}

于 2009-08-04T11:32:46.740 に答える