<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://aspnetpodcast.com/CS11/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ASP.NET Podcast : Routing, ASP.NET</title><link>http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/tags/Routing/ASP.NET/default.aspx</link><description>Tags: Routing, ASP.NET</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>ASP.NET Podcast Show #125 - Routing with Webforms</title><link>http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/10/07/asp-net-podcast-show-125-routing-with-webforms.aspx</link><pubDate>Tue, 07 Oct 2008 13:35:00 GMT</pubDate><guid isPermaLink="false">8e92ef88-20b4-458c-a7a2-fffbfecb3f94:1207</guid><dc:creator>admin</dc:creator><slash:comments>8</slash:comments><comments>http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/comments/1207.aspx</comments><wfw:commentRss>http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/commentrss.aspx?PostID=1207</wfw:commentRss><description>&lt;P&gt;&lt;A class="" href="http://www.scalabledevelopment.com/ftp/ScalabilityWithDotNet.xml"&gt;Subscribe to All!&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.scalabledevelopment.com/ftp/ASPNetPodcast-wmv.xml"&gt;Subscribe to WMV.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.scalabledevelopment.com/ftp/ASPNetPodcast-mp4.xml"&gt;Subscribe to M4V (iPod).&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.scalabledevelopment.com/ASPNETPodcast-mp3.xml"&gt;Subscribe to MP3.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.aspnetpodcast.com/VideoFiles/ASPNETPodcast20081007-ASPNETRoutingWebforms.wmv" target=_blank&gt;Download WMV.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.aspnetpodcast.com/VideoFiles/ASPNETPodcast20081007-ASPNETRoutingWebforms.m4v"&gt;Download M4V (iPod).&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.aspnetpodcast.com/PodcastFiles/ASPNETPodcast20081007-ASPNETRoutingWebforms.mp3"&gt;Download MP3.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Show Notes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Not just for MVC.&lt;/LI&gt;
&lt;LI&gt;Available with .NET 3.5 SP1.&lt;/LI&gt;
&lt;LI&gt;System.Web.Routing.&lt;/LI&gt;
&lt;LI&gt;Web.config.&lt;/LI&gt;
&lt;LI&gt;Global.asax.&lt;/LI&gt;
&lt;LI&gt;Routing class.&lt;/LI&gt;
&lt;LI&gt;Security.&lt;/LI&gt;
&lt;LI&gt;Output page.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Source Code:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web.config entry:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;httpModules&amp;gt;&lt;BR&gt;.......&lt;BR&gt;&amp;lt;add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&amp;gt;&lt;BR&gt;&amp;lt;/httpModules&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Global.asax:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Linq;&lt;BR&gt;using System.Web;&lt;BR&gt;using System.Web.Routing;&lt;BR&gt;using System.Web.Security;&lt;BR&gt;using System.Web.SessionState;&lt;/P&gt;
&lt;P&gt;.................&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Application_Start(object sender, EventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Code that runs on application startup&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strUrlPat = String.Empty;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Route rteRoute, rte2;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strUrlPat = "{controller}/{action}/{nameid}";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rteRoute = new System.Web.Routing.Route(strUrlPat, new DisplayHandler());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Routing.RouteTable.Routes.Add(rteRoute);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strUrlPat = "Book/{ISBNid}";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rte2 = new Route(strUrlPat, new BookHandler());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RouteTable.Routes.Add(rte2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Handler class:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Linq;&lt;BR&gt;using System.Security;&lt;BR&gt;using System.Web;&lt;BR&gt;using System.Web.Compilation;&lt;BR&gt;using System.Web.Routing;&lt;BR&gt;using System.Web.Security;&lt;BR&gt;using System.Web.UI;&lt;/P&gt;
&lt;P&gt;namespace WAP&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class DisplayHandler : IRouteHandler&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IHttpHandler GetHttpHandler(RequestContext rc)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var routingPage = (WAP.Routing.RoutingExample)BuildManager.CreateInstanceFromVirtualPath("~/Routing/RoutingExample.aspx", typeof(Page));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; routingPage.ControllerValue = rc.RouteData.Values["controller"] as string;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; routingPage.ActionValue = rc.RouteData.Values["action"] as string;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; routingPage.ProductValue = rc.RouteData.Values["nameid"] as string;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (routingPage);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class BookHandler : IRouteHandler&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IHttpHandler GetHttpHandler(RequestContext rc)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string VirtualPath = "~/Routing/Books.aspx";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!UrlAuthorizationModule.CheckUrlAccessForPrincipal(VirtualPath, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc.HttpContext.User, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc.HttpContext.Request.HttpMethod))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw (new SecurityException());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var routingPage = (WAP.Routing.Books)BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; routingPage.ISBNNumber = rc.RouteData.Values["ISBNid"] as string;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (routingPage);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Codebehind page:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Linq;&lt;BR&gt;using System.Web;&lt;BR&gt;using System.Web.UI;&lt;BR&gt;using System.Web.UI.WebControls;&lt;/P&gt;
&lt;P&gt;namespace WAP.Routing&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class RoutingExample : System.Web.UI.Page&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string ControllerValue { get; set; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string ActionValue { get; set; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string ProductValue { get; set; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Page_Load(object sender, EventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!Page.IsPostBack)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblController.Text = ControllerValue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblAction.Text = ActionValue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblProduct.Text = ProductValue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;&lt;img src="http://aspnetpodcast.com/CS11/aggbug.aspx?PostID=1207" width="1" height="1"&gt;</description><category domain="http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/tags/Routing/default.aspx">Routing</category><category domain="http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/tags/Webforms/default.aspx">Webforms</category></item></channel></rss>