2009-08-04 9 views
0

Gewünschtes Ergebnis:.net Mvc einzigen Admin-Bereich mehrere Standorte

4 Kundenstandorten als getrennte Projekte 1 Satz Admin-Code von allen vier Standorten verwendet gegenüber

Meine aktuelle Setup 4 Projekte:

  • Kern für Modelle/Einheiten

  • Daten für Repositorys

    Controller für, na ja, Controller

  • Web für Ansichten

Nun wird das Webprojekt enthält Ansichten für Admin und Kunden zugewandten Seiten. Ich möchte das in ein Admin-Projekt und 4 "Kunden" -Projekte aufteilen.

Ich habe Google mit wenig Erfolg über eine Web-App von einer Web-App verweisen. Ich habe gelesen über areas auf haacked.com, aber das scheint nicht ganz richtig. Ich möchte nicht besonders Ansichten in eine DLL einbetten, da dies beim Debuggen/Codieren von Markup ein Problem wäre. Offensichtlich möchte ich nicht mehrere Kopien des Codes.

Kann jemand darauf hinweisen oder mögliche Wege vorschlagen, dies zu tun? Ich bin ein bisschen ratlos.

Antwort

1

Wenn der Grund, das Projekt in 4 Webprojekte hinter Aufspaltung ist, dass Kunden haben unterschiedliche Ansichten versuchen Sie dies:

Habe 1 Webprojekt und einen Unterordner für Ansichten verwenden, die sich unterscheiden.

  • Ansichten/Home/About.aspx (verwendet, wenn kein passender Unterordner gefunden)
  • Ansichten/Home/Customer1/About.aspx
  • Views/Home/Kunde2/About.aspx

Sie können eine benutzerdefinierte Viewengine verwenden, die entscheidet, welche Ansicht gerendert werden soll. Für jede Installation des Webs wurde ein Kunde in der Datei web.config definiert.

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" 
     }; 
} 

}

+0

Das ist großartig, danke! Ich werde es definitiv versuchen :-) –

Verwandte Themen