1

Est-il possible de configurer une application Web ASP.NET Core pour utiliser des pages de rasoir EditorTemplate compilées dans une bibliothèque de classes/un assembly séparé? Par exemple, la question suivante explique comment ViewComponent peut être compilé dans une bibliothèque de classes. Malheureusement, je ne peux pas trouver des informations sur la façon de faire la même chose avec EditorTemplate pages.Modèles EditorTemplate dans un assembly séparé

ASP.NET MVC 6: view components in a separate assembly

Répondre

2

résolu ce problème avec l'aide de pranavkm sur GitHub. Les étapes que j'obligatoires sont les suivantes:

Dans l'application Web: à ConfigureServices() ajouter l'ensemble de module de classe en tant que fournisseur de fichiers (obtenir l'ensemble à travers le type d'une classe ou une interface dans l'assemblage):

var library = typeof(Library.SomeClass).GetTypeInfo().Assembly; 
services.AddMvc() 
    .AddRazorOptions(options => 
    { 
     options.FileProviders.Add(new EmbeddedFileProvider(library)); 
    }); 

Dans le module de classe: assurez-vous que la structure de répertoires contenant vos modèles d'éditeur est identique à celle de votre application Web Views\Shared\EditorTemplates.

Dans le module de classe: les vues de embed rasoir comme une ressource en ajoutant ce qui suit à votre project.json:

"buildOptions": { 
    "embed": "Views/**" 
} 
+0

quelles dépendances sont nécessaires pour la bibliothèque de classes? Comment est l'expérience de l'outil dans vs2017 lorsque vous travaillez à l'intérieur de ces fichiers cshtml vs travailler dans des fichiers de vue dans un projet mvc réel - toute différence? –

+1

Intellisense fonctionne bien (bien que voir http://stackoverflow.com/questions/42804844/class-library-lost-intellisense-in-vs2017-after-net-core-mvc-auto-migration). Vous devez reconstruire manuellement après avoir apporté des modifications - Roslyn ne prend pas automatiquement en compte les choses. Précompilation des vues de rasoir dans une bibliothèque de classes est également assez cassé pour le moment. Sur le front de la dépendance, il suffit d'ajouter une référence à 'Microsoft.AspNetCore.Mvc'. – Polynomial