ASP.NET MVC Folder Structure
Here, you will learn about the ASP.NET MVC project structure. Visual Studio creates the following folder structure of the ASP.NET MVC application by default.
Let's see significance of each folder.
App_Data
The 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
The App_Start folder can contain class files that 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 the significance of these files later.
Content
The 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.
Controllers
The Controllers folder contains class files for the controllers. A Controller
handles users' request and returns a response. MVC requires the name of all controller files to end with "Controller". You will learn about the controller in the next section.
fonts
The Fonts folder contains custom font files for your application.
Models
The Models folder contains model class files. Typically model class includes public properties, which will be used by the application to hold and manipulate application data.
Scripts
The Scripts folder contains JavaScript or VBScript files for the application. MVC 5 includes javascript files for bootstrap, jquery 1.10, and modernizer by default.
Views
The 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.
The Views folder includes a separate folder for each controller. For example, all the .cshtml files, which will be rendered by HomeController will be in View > Home folder.
The Shared folder under the View folder contains all the views shared among different controllers e.g., layout files.
Additionally, MVC project also includes the following configuration files:
Global.asax
Global.asax file 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
Packages.config file is managed by NuGet to track what packages and versions you have installed in the application.
Web.config
Web.config file contains application-level configurations.
Learn how the ASP.NET MVC framework handles requests using routing in the next section.