• Javascript
  • Python
  • Go

Separating Views in ASP.NET MVC Assemblies

ASP.NET MVC is a powerful and popular framework for building web applications. One of the key features of this framework is the ability to o...

ASP.NET MVC is a powerful and popular framework for building web applications. One of the key features of this framework is the ability to organize code into separate assemblies. This allows for better separation of concerns, easier maintenance, and improved scalability.

In this article, we will explore the concept of separating views in ASP.NET MVC assemblies. We will discuss the benefits of this approach and provide a step-by-step guide on how to implement it in your projects.

Why Separate Views in ASP.NET MVC Assemblies?

The main reason for separating views in different assemblies is to improve the overall architecture of your application. Views are an important part of the MVC pattern, as they are responsible for displaying the user interface of your application. However, as your application grows, the number of views also increases, which can lead to a cluttered and unorganized structure.

By separating views into different assemblies, you can achieve a cleaner and more maintainable codebase. This approach also promotes reuse and modularity, as views can be easily shared across different projects.

Another benefit of separating views in assemblies is improved performance. When views are in a separate assembly, they can be precompiled, which reduces the compilation time and results in faster page loading.

Implementing Separated Views in ASP.NET MVC Assemblies

Let's now take a look at how we can implement separated views in our ASP.NET MVC project. The following steps assume that you already have a basic understanding of the MVC pattern and have a working project set up.

Step 1: Create a New Project

To begin, create a new ASP.NET MVC project in Visual Studio. Make sure to select the "Empty" template in the "ASP.NET Web Application" dialog.

Step 2: Add a New Class Library Project

Next, add a new class library project to the solution. Name it "Views" or any other name that makes sense for your project.

Step 3: Move Views to the Class Library Project

In the original ASP.NET MVC project, move all the views to the "Views" class library project. You can do this by simply dragging and dropping the views or by using the "Move" option in the context menu.

Step 4: Set the Build Action for Views

In the "Views" class library project, we need to make sure that the views are set to the correct build action. Right-click on each view and select "Properties". In the properties window, set the "Build Action" to "Content" and the "Copy to Output Directory" to "Do not copy".

Step 5: Reference the Views Project in the MVC Project

To use the views from the "Views" project in the MVC project, we need to add a reference to it. In the MVC project, right-click on "References" and select "Add Reference". In the "Projects" tab, select the "Views" project and click on "OK".

Step 6: Configure the View Engine

Now that we have moved the views to a separate project, we need to configure the view engine to look for views in this project. In the "Views" project, create a new class called "ViewsEngine.cs" and add the following code:


public class ViewsEngine : RazorViewEngine


public ViewsEngine()


var viewLocations = new[]





ViewLocationFormats = viewLocations;

PartialViewLocationFormats = viewLocations;




This code tells the view engine to look for views in the "Views" project in addition to the default locations.

Step 7: Register the View Engine

Finally, we need to register our custom view engine in the "Global.asax.cs" file. In the "Application_Start" method, add the following code:



ViewEngines.Engines.Add(new ViewsEngine());


This will ensure that our custom view engine is used instead of the default one.


Separating views in ASP.NET MVC assemblies can greatly improve the organization and maintainability of your codebase. By following the steps outlined in this article, you can easily implement this approach in your projects and reap the benefits it offers. So go ahead and give it a try in your next ASP.NET MVC project.

Related Articles

ASP.NET MVC Route Mapping

ASP.NET MVC is a powerful and widely used web development framework for creating dynamic and scalable web applications. One of the key featu...

Optimizing ASP.NET MVC Form Post

As web developers, we are constantly striving to improve the performance and efficiency of our applications. One area that often gets overlo...

Posting JSON Data to ASP.NET MVC

In the world of web development, there are many ways to send and receive data between a client and server. One popular method is through the...

ASP.NET MVC Authorization

ASP.NET MVC Authorization: Understanding the Key Concepts ASP.NET MVC is a widely used framework for building web applications. One of the k...