0% found this document useful (0 votes)
11 views

MVC Lifecycle

Uploaded by

chinmaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

MVC Lifecycle

Uploaded by

chinmaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Asp.

net MVC Request Life Cycle


MVC has two life cycles −

 The application life cycle

 The request life cycle

The Application Life Cycle


The application life cycle refers to the time at which the application
process actually begins running IIS until the time it stops. This is marked
by the application start and end events in the start up file of your
application.

While programming with Asp.net MVC, you should be aware of the life of an Asp.net
MVC request from birth to death. In this article, I am going to expose the Asp.net
MVC Request Life cycle. There are seven main steps that happen when you make a
request to an Asp.net MVC web applications. For more details refer Detailed ASP.NET
MVC Pipeline

1. Routing
Asp.net Routing is the first step in MVC request cycle. Basically it is a pattern
matching system that matches the request’s URL against the registered URL
patterns in the Route Table. When a matching pattern found in the Route Table,
the Routing engine forwards the request to the corresponding IRouteHandler
for that request. The default one calls the MvcHandler. The routing engine
returns a 404 HTTP status code against that request if the patterns is not found
in the Route Table.
When application starts at first time, it registers one or more patterns to the
Route Table to tell the routing system what to do with any requests that match
these patterns. An application has only one Route Table and this is setup in the
Global.asax file of the application.
1. public static void RegisterRoutes(RouteCollection routes)
2. {
3. routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
4. routes.MapRoute( "Default", // Route name
5. "{controller}/{action}/{id}", // URL with parameters
6. new { controller = "Home", action = "Index", id =
UrlParameter.Optional } // Parameter defaults
7. );
8. }

2. MvcHandler
The MvcHandler is responsible for initiating the real processing inside ASP.NET
MVC. MVC handler implements IHttpHandler interface and further process the
request by using ProcessRequest method as shown below:
1. protected internal virtual void ProcessRequest(HttpContextBase
httpContext)
2. {
3. SecurityUtil.ProcessInApplicationTrust(delegate {
4. IController controller;
5. IControllerFactory factory;
6. this.ProcessRequestInit(httpContext, out controller, out
factory);
7. try
8. {
9. controller.Execute(this.RequestContext);
10. }
11. finally
12. {
13. factory.ReleaseController(controller);
14. }
15. });
16. }

3. Controller
As shown in above code, MvcHandler uses the IControllerFactory instance and
tries to get a IController instance. If successful, the Execute method is called. The
IControllerFactory could be the default controller factory or a custom factory
initialized at the Application_Start event, as shown below:
1. protected void Application_Start()
2. {
3. AreaRegistration.RegisterAllAreas();
4. RegisterRoutes(RouteTable.Routes);
5. ControllerBuilder.Current.SetControllerFactory(new
CustomControllerFactory());
6. }

4. Action Execution
Once the controller has been instantiated, Controller's ActionInvoker determines
which specific action to invoke on the controller. Action to be execute is chosen
based on attributes ActionNameSelectorAttribute (by default method which
have the same name as the action is chosen)
and ActionMethodSelectorAttribute(If more than one method found, the
correct one is chosen with the help of this attribute).

5. View Result
The action method receives user input, prepares the appropriate response data,
and then executes the result by returning a result type. The result type can be
ViewResult, RedirectToRouteResult, RedirectResult, ContentResult, JsonResult,
FileResult, and EmptyResult.

6. View Engine
The first step in the execution of the View Result involves the selection of the
appropriate View Engine to render the View Result. It is handled
by IViewEngine interface of the view engine. By default Asp.Net MVC
uses WebForm and Razor view engines. You can also register your own custom
view engine to your Asp.Net MVC application as shown below:
1. protected void Application_Start()
2. {
3. //Remove All View Engine including Webform and Razor
4. ViewEngines.Engines.Clear();
5. //Register Your Custom View Engine
6. ViewEngines.Engines.Add(new CustomViewEngine());
7. //Other code is removed for clarity
8. }

7. View
Action method may returns a text string,a binary file or a Json formatted data.
The most important Action Result is the ViewResult, which renders and returns
an HTML page to the browser by using the current view engine.

You might also like