Introduction
Customizing the View Engines
or adding our custom View Engines
lets the search process during the loading of out webpage reduce by folds that somehow makes our app optimized.<code>
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 though some milliseconds but searching 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 codes.
Step 1: Go to the Global.asax
Global.asax
is the heart of the application as 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 extension cshtml (for C#) and vbhtml (for VB).Just see the search has reduced by half.
Step 4: Now we create our own custom View Engine
--Add a class to 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 reduced by folds from 8 to 2. That is: now only 2 are searched.
Conclusion
After removing the Webform Engines, Razor View Engine
will be twice as fast with the Webform Engines
.
Hope this helps beginners like me. :)
History
- 6 March 2014 - First version.
- 7 March 2014 - Formatting updates.