0

期望的结果:

4 个面向客户的站点作为单独的项目 1 组所有四个站点都使用的管理代码

我目前的设置是 4 个项目:

  • 模型/实体的核心

  • 存储库数据

  • 控制器的控制器

  • 浏览网页

现在,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 回答