.NET Core and MVC: Customize view paths
.NET Core: Customize view paths
Intro
The .NET Core is finally released 🙂 !! I wrote about .NET Core a lot of times:
Future of ASP.NET is open source and cross platform
Introducing ASP.NET 5 on Ubuntu
What is .NET Core?
ASP.NET Core is a lean and composable framework for building web and cloud applications. ASP.NET Core is fully open source and available on GitHub. ASP.NET Core is available on Windows, Mac, and Linux.
Usually, .NET Core tries to search views in the following folders by using the following names( {1}
is the Controller name, {0}
is the Action method name):
~/Views/{1}/{0}.cshtml
~/Views/Shared/{0}.cshtml
This article shows how to customize views paths and names by extending RazorViewEngine and IViewLocationExpander.
Customize views name
You may need to rewrite the name of searched view , For example:
~/Views/{1}/{0}.vary1.cshtml
~/Views/Shared/{0}.vary2.cshtml
UML solution
To customize views name is necessary to extend the RazorViewEngine class, I’ve called the subclass CustomViewEngine:
Code solution
Here is the implementation of CustomViewEngine.cs class:
Important: the Concat method @ line 41 is used to maintain the original locations.
You also need to add the CustomViewEngine class to your Startup.cs file:
Customize view paths
.NET also allows to customize the paths of views, for example :
~/CustomViews/{1}/{0}.cshtml
~/CustomViews/Shared/{0}.cshtml
UML solution
To override views path is necessary to extend the IViewLocationExpander class, the subclass name is CustomViewLocator :
Code solution
Here is the implementation of CustomViewLocator.cs class:
You also need to add the CustomViewLocator class to your Startup.cs file:
Conclusion
.NET Core 1.0 offers a lot ways to customize itself by using OOP fundamentals. As open source framework, Companies and user can rewrite and customize every single part of it.
It is also very easy access to the source code, which is available on Github.
The repo of this article is available here.
Cheers 🙂