asp.net routing deep dive

18
ASP.NET Routing Deep Dive If you name it correctly, they will find it.

Upload: stacy-vicknair

Post on 21-Jun-2015

284 views

Category:

Technology


0 download

DESCRIPTION

ASP.NET Routing gives us the ability to forge our own paths towards a more expressive search friendly web. In this presentation we’ll take a look at the ins and outs of ASP.NET Routing as it is used in both ASP.NET MVC and ASP.NET WebForms and how to customize your web routes to your tailored needs.

TRANSCRIPT

Page 1: ASP.NET Routing Deep Dive

ASP.NET Routing Deep DiveIf you name it correctly, they will find it.

Page 2: ASP.NET Routing Deep Dive

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: [email protected]

Page 3: ASP.NET Routing Deep Dive

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

Page 4: ASP.NET Routing Deep Dive

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

Page 5: ASP.NET Routing Deep Dive

5

HttpModules and HttpHandlers

Http Module 1

Http Module 2

Http Module 3

Http Handler

Http Handler

Http Handler

Page 6: ASP.NET Routing Deep Dive

6

ASP.NET Routing (System.Web.Routing)

UrlRoutingModuleIHttpModule

PageRouteHandlerIRouteHandler

UrlRoutingHandlerIHttpHandler

Content (Page, etc.)

Page 7: ASP.NET Routing Deep Dive

7

DefaultControllerFactoryIControllerFactory

ASP.NET MVC Routing (System.Web.Mvc)

UrlRoutingModuleIHttpModule

MvcRouteHandlerIRouteHandler

MvcHandlerUrlRoutingHandler

MyController.Execute()Controller

Page 8: ASP.NET Routing Deep Dive

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"}

Page 9: ASP.NET Routing Deep Dive

9

DEMO – Out of the box MVC Routing

Page 10: ASP.NET Routing Deep Dive

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

Page 11: ASP.NET Routing Deep Dive

11

DEMO – RouteConstraints and Routes

Page 12: ASP.NET Routing Deep Dive

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());

Page 13: ASP.NET Routing Deep Dive

13

DEMO – Unit Testing with Routes

Page 14: ASP.NET Routing Deep Dive

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[]

Page 15: ASP.NET Routing Deep Dive

15

DEMO – Routes in ASP.NET WebForms

Page 16: ASP.NET Routing Deep Dive

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

Page 17: ASP.NET Routing Deep Dive

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

Page 18: ASP.NET Routing Deep Dive

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: [email protected]