Introduction
This article describes the customization of a view engine or adding a custom view engine. Let's see the search process during the loading of a webpage reducing by folds that somehow makes our app optimized.
Why Really is it Needed
When we forget to add a View page to any action method in the controller, we get an error like:
Just imagine that though some milliseconds, the searching of all these is worthless if we are using a specific View Engine, may it be Razor or Aspx in C# or VB.
Using the Code
It's very simple and easy. Let's peep into the code.
Step 1: Go to the Global.asax.
Global.asax is the heart of the application since it contains the App_start() method that starts our application.
- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- WebApiConfig.Register(GlobalConfiguration.Configuration);
- FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- BundleConfig.RegisterBundles(BundleTable.Bundles);
- AuthConfig.RegisterAuth();
- }
Step 2: Add to the Application_Start() method
- protected void Application_Start()
- {
- ViewEngines.Engines.Clear();
- }
After this, when we run we get an error page denoting:
Step 3: After this Add
- protected void Application_Start()
- {
- ViewEngines.Engines.Clear();
- ViewEngines.Engines.Add(new RazorViewEngine());
- }
Here after this, we get an error page denoting:
This is because we have added only
RazorViewEngine(), that has the extension
cshtml (for C#) and
vbhtml (for VB). Just see that the search has been reduced in half.
Step 4: Now we create our own custom View Engine
Add a class to the
App_Start folder (with any name that suits you). Then make the class inherit from
RazorViewEngine.
- public class "your viewengine
-
- name":RazorViewEngine
Add the following code into the class:
- ViewLocationFormats = new[]
- {
- "~/Views/{1}/{0}.cshtml",
- "~/Views/Shared/{0}.cshtml"
- };
- MasterLocationFormats = new[]
- {
- "~/Views/{1}/{0}.cshtml",
- "~/Views/Shared/{0}.cshtml"
- };
We can similarly add for partialviews too (PartialViewLocationFormats = new...).
This is your custom ViewEngine before building and running your app. Don't forget to add:
- ViewEngines.Engines.Add(new your viewengine name());
This helps your search by reducing it by folds from 8 to 2. That is: now only 2 are searched.
Conclusion
After removing the
Webform Engines, the Razor View Engine will be twice as fast as the Webform Engines.
I hope this helps beginners like me. :).