Understanding ASP.Net MVC Project Folder Structure


In the previous article we have learned about how to create asp.net mvc 5 application. Visual Studio creates the following mvc project folder structure by default.

ASP.NET MVC Application Folder Structure

asp.net mvc project folder structure

Let’s see meaning of each folder.


App_Data folder can contain application data files like LocalDB, .mdf files, xml files and other data related files. IIS will never serve files from App_Data folder.


App_Start folder can contain class files which will be executed when the application starts. Typically, these would be config files like AuthConfig.cs, BundleConfig.cs, FilterConfig.cs, RouteConfig.cs etc. MVC 5 includes BundleConfig.cs, FilterConfig.cs and RouteConfig.cs by default. We will see significance of these files later.

appstart folder asp.mvc

App_Start Folder


Content folder contains static files like css files, images and icons files. MVC 5 application includes bootstrap.css, bootstrap.min.css and Site.css by default.

content folder asp.mvc


Controllers folder contains class files for the controllers. Controllers handles users’ request and returns a response. MVC requires the name of all controller files to end with “Controller”.

controller folder in asp.mvc


Fonts folder contains custom font files for your application.

fonts asp.mvc


Models folder contains model class files. Typically model class includes public properties, which will be used by application to hold and manipulate application data.


Scripts folder contains JavaScript or VBScript files for the application. MVC 5 includes javascript files for bootstrap, jquery 1.10 and modernizer by default.

scripts folder asp.mvc


Views folder contains html files for the application. Typically view file is a .cshtml file where you write html and C# or VB.NET code.

Views folder includes separate folder for each controllers. For example, all the .cshtml files, which will be rendered by HomeController will be in View > Home folder.

Shared folder under View folder contains all the views which will be shared among different controllers e.g. layout files.

view folder asp.mvc

Additionally, MVC project also includes following configuration files:


Global.asax allows you to write code that runs in response to application level events, such as Application_BeginRequest, application_start, application_error, session_start, session_end etc.


Packages.config file is managed by NuGet to keep track of what packages and versions you have installed in the application.


Web.config file contains application level configurations.


I hope you liked this article based on mvc project folder structure. I would like to have feedback from my blog readers. Your valuable feedback, question, or comments about this article are always welcome.


Please enter your comment!
Please enter your name here