ciao,
hiram ha scritto:
i "clienti" saranno per l'appunto una collezione dinamica, proveniente pertanto dal DB.
Ok, ma considera che aggiungere un nuovo cliente non sarà immediato come aggiungere un record nel database. Dovrai crearti la relativa area e inserire al suo interno tutte le view e i controller necessari.
Non so in cosa consiste il tuo progetto (forse una piattaforma per costruire siti web?) ma è probabile che così facendo dovrai duplicare molto codice.
Prova a valutare quest'altro approccio: un unico sito MVC, senza aree, che contenga tutti i controller e le view che possono essere necessari nella realizzazione dei vari siti. Ad esempio potrebbero esserci dei controller come GalleriaController (per visualizzare delle foto) oppure CarrelloController (per acquistare dei prodotti), e così via.
E' probabile che non tutti i clienti acquistino i moduli della galleria o del carrello, e quindi potresti configurare un filtro globale che legga il dominio (per determinare il cliente) ed impedisca o consenta l'accesso a quei controller.
Per le pagine statiche (chi siamo, credits, ecc...) puoi configurare una route generica tipo questa ed usare un controller che dovrà semplicemente leggere l'url e andare a pescare nel database il relativo contenuto.
routes.MapRoute(
"ContenutoStatico",
"{*url}",
new { controller = "Contenuto", action = "Index" }
);
Se si rendessero necessarie delle personalizzazioni per il singolo cliente, puoi sempre scriverti degli altri controller che derivino da quelli base. Poi, grazie ad un
ControllerFactory custom, dovrai andare a scegliere quei controller personalizzati (se esistono), altrimenti selezionare quelli base.
Per le views è la stessa cosa: potresti provare con un
display mode provider personalizzato. E' una novità di MVC4 che nasce offrire diverse visualizzazioni per desktop e mobile ma che tu potresti adattare al tuo contesto multi-utente.
Per ogni cliente crea una sottocartella dentro /Content in cui inserirai le foto e gli altri file statici.
MVC è molto estendibile, prova a vedere se riesci a fare a meno delle Areas.
ciao,
Moreno