The document provides an overview of ASP.NET routing and deep dive into ASP.NET MVC routing. It discusses out of the box MVC routing using RouteCollection.MapRoute(), how to customize routing with custom route constraints and route classes, unit testing routes, and adding routing to ASP.NET WebForms applications. Code demonstrations are provided for customizing routes and constraints, unit testing routes, and using routes in WebForms. Helpful links for further information on ASP.NET routing are also included.
2. Welcome to Houston TechFest
Thank you for being a part of the
7th Annual Houston TechFest!
• Please turn off all electronic devices or set them to vibrate.
• If you must take a phone call, please do so in the lobby so as not
to disturb others.
• Thanks to our Diamond Sponsors:
1
3. Information
• Speaker presentation slides will be available at
www.houstontechfest.org within a week
• Don’t forget to complete the Bingo card to be
eligible for door prizes
2
4. ABOUT ME
Stacy Vicknair, MVP
Senior Development Consultant
Blog
http://www.wtfnext.com
Toastmasters
http://www.toastmasters.org
http://www.batonrougespeaks.com
Twitter: @svickn
Email: stacy.vicknair@sparkhound.com
5. “BE A HERO. GROW A BEARD.”
The Sparkhound Foundation is sponsoring the growth of
facial hair to raise Prostate Cancer Awareness.
Through Septembeard we will
raise funds for the research and
treatment of prostate cancer.
Want to join us? Learn more at Septembeard.org.
6. Agenda
•
•
•
•
•
•
What Is Routing?
Out of the Box ASP.NET MVC Routing
Customizing ASP.NET MVC Routing
Unit Testing ASP.NET MVC Routes
Routing In ASP.NET WebForms
Helpful Links
5
7. 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
6
6
13. 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
12
15. 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());
– Not “officially” ported to MVC4 by Ndepend yet.
• Search NuGet for MvcContrib.Mvc4 to find a port
14
17. 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[]
16
19. Agenda
•
•
•
•
•
•
What Is Routing?
Out of the Box ASP.NET MVC Routing
Customizing ASP.NET MVC Routing
Unit Testing ASP.NET MVC Routes
Routing In ASP.NET WebForms
Helpful Links
18
20. Helpful Links
THE MOST IMPORTANT LINK I COULD EVER TELL YOU:
http://aspnetwebstack.codeplex.com/
http://mvccontrib.codeplex.com/ - MVCContrib
http://msdn.microsoft.com/en-us/library/dd329551.aspx - Webforms
Google or Bing: ASP.NET Routing
Slides / Code will be available at http://www.wtfnext.com
References:
http://www.15seconds.com/Issue/020417.htm
http://msdn.microsoft.com/en-us/library/cc668201.aspx
http://blogs.msdn.com/b/alikl/archive/2009/04/02/how-asp-net-mvc-works-for-aspiring-architects-2.aspx
http://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-constraint
http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx
19
21. Please Leave Feedback During Q&A
If you leave session
feedback and
provide contact
information, you
will be qualified for
a prize
Scan the QR code
to the right or go to
bit.ly/htf130202
20
Editor's Notes
Why are we doing this? In honor of the Sparkies and Sparkie family members who have (or continue to fight) fought prostate cancerBackground:- The Sparkhound Foundation is our non-profit charitable giving organization- Prostate cancer is the second leading cause of death in American men.
Why are we doing this? In honor of the Sparkies and Sparkie family members who have (or continue to fight) fought prostate cancerBackground:- The Sparkhound Foundation is our non-profit charitable giving organization- Prostate cancer is the second leading cause of death in American men.