[ASP.NET Core] Tester si une vue existe

Depuis la version d’ASP.NET Core (MVC 6) les anciens codes pour tester l’existence d’une vue ne fonctionnent plus du tout.

En recherchant un peu sur Internet on trouve essentiellement des tests d’existence des fichiers dans le dossiers « ~/Views » de l’application. Toutefois le système de vue utilise les File Providers pour obtenir les fichiers de vue. C’est notamment mon cas dans un projet où des vues sont « incorporées » dans les DLLs il faut donc ajouter des « EmbeddedFileProvider » (voir mon post précédent).

Par conséquent le test de fichier ne fonctionne pas dans ce cas.

Ma technique est tout simplement de demander au moteur de vue si la vue existe.

Le code

Le code n’est pas bien compliqué je me suis basé sur l’objet ViewResultExecutor et en particulier sa méthode FindView() 😉

Je l’ai défini comme une extension de contrôleur et ajouté dans Gist:

Conclusion

Voilà un code qui fonctionne exactement comme le moteur d’exécution Razor.

A bientôt,

Yanos

Laisser un commentaire