Ho alcuni moduli con controller e viste. È fondamentalmente un'estensione per la mia applicazione web. Ogni modulo è in una libreria di classi.Come includere controller e viste da un progetto esterno in MVC6?
Desidero caricare questi assembly dalla mia applicazione Web. Ma sono senza fortuna qui.
mia struttura del file di soluzioni è come:
src
|
|-- Web.Common (Class Library Project)
| |- Files like: filters, my own controller etc...
|
|-- WebApplication (ASP.NET5 WebSite)
| |- wwwroot
| |- Controllers
| |- Views
| |- etc...
|
|-- Module 1 (Class Library Project)
| |- Controllers
| |- Views
|
|-- Module 2 etc...
Questi sono quelli che ho provato:
ho cercato di implementare il mio IViewLocationExpander
public class CustomViewLocationExpander : IViewLocationExpander
{
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
{
yield return "/../Module1.Web/Views/Home/TestView.cshtml";
yield return "../Module1.Web/Views/Home/TestView.cshtml";
yield return "/Module1.Web/Views/Home/TestView.cshtml";
yield return "~/../Module1.Web/Views/Home/TestView.cshtml";
}
public void PopulateValues(ViewLocationExpanderContext context)
{
}
}
ho provato tutti i tipi di pa THS che mi sono venute in mente, ma senza fortuna :(
ottengo:
InvalidOperationException: non è stata trovata La vista 'TestView'. Le seguenti posizioni sono stati cercati:
~/Module1.Web/Vista/Home/TestView.cshtml ~ /../ Module1.Web/Vista/Home/TestView.cshtml /Module1.Web/Views/Home/ TestView.cshtml /../Module1.Web/Views/Home/TestView.cshtml
Così ho pensato che forse il default IFileProvider non guarda al di fuori percorso principale del WebApp e ha deciso di provare l'attuazione di mia possedere IFileProvider.
Ma qui non ho avuto alcun successo neanche.
Forse esiste una funzionalità per ottenere ciò chiamando alcuni metodi ASP.NET ma non lo conosco.
Qualcuno suggerisce?
Mi piacerebbe avere più assiemi che contribuiscono a visualizzazioni e logica del controllore a un'app web centrale. Qualche idea su come indirizzare un array di FileProviders? – Matthew
@Matthew, 'CompositeFileProvider' accetta una raccolta di' FileProviders', quindi è possibile registrarne il numero desiderato. 'new CompositeFileProvider (EmbeddedFileProvider, EmbeddedFileProvider, EmbeddedFileProvider, ecc.)'. –
@Matthew, se guardi all'implementazione di esempio che ho collegato sopra, vedrai un esempio in cui estraggo le viste da più assiemi. Ecco il codice rilevante: https://github.com/johnnyoshika/mvc6-view-components/blob/master/Web/Startup.cs#L27 –