代码之家  ›  专栏  ›  技术社区  ›  Dave Archer

.net mvc单个管理部分多个站点

  •  0
  • Dave Archer  · 技术社区  · 17 年前

    预期结果:

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

    • 用于存储库的数据

    • 控制器,嗯,控制器

    • 浏览网页

    我在google上看到过从web应用程序引用web应用程序的成功案例。我读过 areas 在haacked.com上,但这似乎并不完全正确。我并不特别想在dll中嵌入视图,因为在调试/编码标记时,这将是一件痛苦的事情。显然,我不想要代码的多个副本。

    有人能指出或建议可能的方法吗?我有点不知所措。

    1 回复  |  直到 17 年前
        1
  •  1
  •   Mathias F    17 年前

    如果将项目拆分为4个WebProject的原因是客户有不同的观点,请尝试以下方法:

    拥有1个webproject,并对不同的视图使用子文件夹。

    • Views/Home/About.aspx(在未找到匹配的子文件夹时使用)
    • Views/Home/Customer1/About.aspx
    • Views/Home/Customer2/About.aspx

    您可以使用自定义的viewengine来决定应该渲染哪个视图。每个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"
          };
    }
    

    }

    推荐文章