Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Customizing View Engines

0.00/5 (No votes)
6 Mar 2014 2  
Customizing the view Engines (Razor View Engine) in MVC4 to optimize our App.

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.

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();//This clears all the Web form view engines.
}

After this, when we run we get an error page denoting:

Step 3: After this Add

protected void Application_Start()
{
    ViewEngines.Engines.Clear(); //This clears all the view engines as mentioned earlier
    ViewEngines.Engines.Add(new RazorViewEngine()); //This RazorViewEngine() is present in the System.Web.Mvc namespace
}

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 //This RazorViewEngine in present in the System.Web.Mvc namespace

--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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here