asp.net routing deep dive
Post on 21-Jun-2015
284 Views
Preview:
DESCRIPTION
TRANSCRIPT
ASP.NET Routing Deep DiveIf you name it correctly, they will find it.
2
About Me
Stacy Vicknair, MVP MCPDDevelopment Consultant for Sparkhound
Blog - http://www.wtfnext.comBRAG - http://www.braglunch.comTM - http://www.batonrougespeaks.com
Twitter: @svicknEmail: stacy.vicknair@sparkhound.com
3
Agenda
− What is routing?− Out of the box ASP.NET MVC routing
− Demo: OOB MVC Routing− Customizing ASP.NET MVC routing
− Demo: RouteConstraints and Routes− Unit Testing ASP.NET MVC routes
− Demo: Unit Testing Routes− Routing in ASP.NET WebForms
− Demo: Routing in WebForms− Helpful links
4
What is ASP.NET Routing?
“ASP.NET routing enables you to use URLs that do not have to map to specific files in a Web site.”
- http://msdn.microsoft.com/en-us/library/cc668201.aspx
www.mysite.com/categories.aspx?categoryName=sports
www.mysite.com/categories/sports
5
HttpModules and HttpHandlers
Http Module 1
Http Module 2
Http Module 3
Http Handler
Http Handler
Http Handler
6
ASP.NET Routing (System.Web.Routing)
UrlRoutingModuleIHttpModule
PageRouteHandlerIRouteHandler
UrlRoutingHandlerIHttpHandler
Content (Page, etc.)
7
DefaultControllerFactoryIControllerFactory
ASP.NET MVC Routing (System.Web.Mvc)
UrlRoutingModuleIHttpModule
MvcRouteHandlerIRouteHandler
MvcHandlerUrlRoutingHandler
MyController.Execute()Controller
8
Out of the box MVC Routing
− Routes.IgnoreRoute()− System.Web.Routing.StopRoutingHandler
− Routes.MapRoute()− System.Web.Mvc.RouteCollectionExtensions− Parameters
− string name – “MyUniqueName”− string url – “{controller}/{action}/{id}”− Object defaults - new { controller = "Home", action = "Index”} − Object constraints – new {id = “[0-9]+”}− string[] namespaces - new[] { "Myproject.MyControllers"}
9
DEMO – Out of the box MVC Routing
10
Customizing ASP.NET MVC Routing
− Three main areas for routing customization− RouteConstraints
− Implementing constraints that require more logic than RegEx− Created by implementing System.Web.Routing.IRouteConstraint
− Routes− Allow for control over how route data is parsed or route paths
are determined− Created by subclassing System.Web.Routing.RouteBase− Default is Route ex. RouteCollection.Add(new Route(…))
− RouteHandlers− Allow for preprocessing before default RouteHandler behavior
− ex. RouteData modifications
11
DEMO – RouteConstraints and Routes
12
Unit Testing Routes
− Use RouteTable.Routes.GetRouteData()− Requires mocked HttpContext (to provide the URL)
− Enumerate over RouteData to ensure the proper information is returned
− Alternative is MVCContrib− string.ShouldMapTo<T>(c => c.Action());
13
DEMO – Unit Testing with Routes
14
Adding Routing to ASP.NET WebForms
− In the Global.asax, add a reference to System.Web.Routing
− Add routes via RouteTable.Routes.MapPageRoute()− Update links to use routes
− RouteUrl− GetVirtualPath
− Get Routing Data− RouteValue− RouteData.Values[]
15
DEMO – Routes in ASP.NET WebForms
16
Agenda
− What is routing?− Out of the box ASP.NET MVC routing
− Demo: OOB MVC Routing− Customizing ASP.NET MVC routing
− Demo: RouteConstraints and Routes− Unit Testing ASP.NET MVC routes
− Demo: Unit Testing Routes− Routing in ASP.NET WebForms
− Demo: Routing in WebForms− Helpful links
17
Helpful Links
http://mvccontrib.codeplex.com/ - MVCContribhttp://msdn.microsoft.com/en-us/library/dd329551.aspx - Webforms
Google or Bing: ASP.NET Routing
References:http://www.15seconds.com/Issue/020417.htmhttp://msdn.microsoft.com/en-us/library/cc668201.aspxhttp://blogs.msdn.com/b/alikl/archive/2009/04/02/how-asp-net-mvc-works-for-aspiring-architects-
2.aspxhttp://blog.didsburydesign.com/2010/02/how-to-allow-hyphens-in-urls-using-asp-net-mvc-2/http://stackoverflow.com/questions/1107507/asp-net-mvc-custom-route-handler-constrainthttp://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx
18
About Me
Stacy Vicknair, MVP MCPDDevelopment Consultant for Sparkhound
Blog - http://www.wtfnext.comBRAG - http://www.braglunch.comTM - http://www.batonrougespeaks.com
Twitter: @svicknEmail: stacy.vicknair@sparkhound.com
top related