.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
Kaviya Balasubramanian
satyapriyanayak
SP
abhays
Sasi Prabhu

Home >> Articles >> ASP.NET >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Step by Step tutorial on URL routing in ASP.Net 4.0

Posted By:Dhananjay Kumar       Posted Date: August 20, 2010    Points: 25    Category: ASP.NET    URL: http://www.dhananjaykumar.net  

URL Routing is new feature in ASP.Net 4.0. This step by step tutorial will give a walkthrough on how to work with URL Routing and an introduction of URL routing in ASP.Net 4.0.
 

Objective 


URL Routing is new feature in ASP.Net 4.0. This article will give a walkthrough on how to work with URL Routing and an introduction of that. 


URL Routing 


ASP.Net 4.0 URL Routing enables mapping between search engines optimized URL to physical web Form pages. 


For example 


http://localhost:36774/Products/All    URL will be mapped to http://localhost:36774/AllProduct.aspx


Here the first URL is more search engine optimized. Using the routing engine ASP.Net 4.0 perform URL mapping.


Follow the below steps  to see how to work with URL routing 


Step 1
  • Open Visual studio 
  • Create new project 
  • Select ASP.Net Web Application from Web tab 
  • Give any name of the project. I am giving RoutingDemo for purpose of this article. 

1.gif



Step 2
  • Right click on the project 
  • Add a new folder 

    2.gif
  • Give any name of your choice to the folder. I am giving name Model for purpose of this article 

    3.gif

So after creating a new folder, you can see Model folder in solution explorer. 
Step 3
  • Right click on Model folder and select Add new item 

    4.gif
  • From Data tab select Linq to SQL classes . Give any name of your choice. I am giving name here NorthWindProduct for purpose of this article 

    5.gif
  • Click on  Server Explorer 

    6.gif
  • From the Server Explorer ,  right click on Data Connections  and select add connection 

    7.gif
  • Below pop window will come.  

    8.gif

    Give data base server name at first. Select the authentication mode, you use to connect to your database and then select NorthWind data base.  After giving these three fields click OK. 
  • From Server explorer, expand the NorthWind database connection. From table tab select Product and drag it in design surface 

    9.gif
  • After dragging on the design surface NorthWindProduct.dbml file as below 

    10.gif
  • In solution explorer you can see inside Model folder three files.  There is a NorthWindProductDataContext class inside RoutingDemo.Model name space , we will be using as data context 

    12.gif

Step 4


We want to navigate to two different pages. 
  1. Select all Products (AllProduct.aspx) : This page will display all the Products 
  2. Select a particular product on basis of Product name. (ParticularProduct.aspx): This page will display product detail of given product name. 

Step 4a
  • Right click on site.master in solution explorer.  And add a content page 

    12.gif
  • Now in solution explorer , you can notice you have WebForm.aspx 

    13.gif
  • Right click on WebForm.aspx and rename this to AllProduct.aspx 

    14.gif

After renaming the name, you will have AllProduct.aspx in solution explorer. 


15.gif



Step 4B


Follow the steps exactly the same as step 4A and add one more web form. Give name of this form as ParticularProduct.aspx instead of AllProduct.aspx. So now in solution explorer you can see two web forms has been added. 


16.gif



Step 4C
  • Open AllProduct.aspx 
  • Drag GridView from Data tab of tool box and put it on AllProduct.aspx 

    17.gif

So, in design AllPrduct.aspx will look as below, 


18.gif



AllProduct.aspx will look like below, 

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AllProduct.aspx.cs" Inherits="RoutingDemo.WebForm1" %>



   
   


Now we need to write code to fetch data from LINQ to SQL class 


AllProduct.aspx.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RoutingDemo.Model;
namespace RoutingDemo
{
   public partial class WebForm1 : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {
           GridView1.DataSource = Products;
           GridView1.DataBind();
       }
       private List _Product= null ;
       protected List Products
       {
           get
           {
               if (_Product == null)
               {
                   NorthWindProduct_DataContext context = new NorthWindProduct_DataContext();
                   return context.Products.ToList();
         }
               return _Product;
           }
       }
   }
}



Explanation of Code 
  1. Put the namespace 

    19.gif
  2. Created a protected property. In getter, I am checking for data member.  If it is null, then I am creating instance of NorthWindProduct and fetching all the products. 

    20.gif
  3. On page load putting the property as data source of grid view. 

    21.gif

Step 4D
  • Open ParticularProduct.aspx 
  • Drag GridView from Data tab of tool box and put it on ParticularProduct.aspx 

    22.gif

So, in design ParticularProduct.aspx  will look as below, 


23.gif



ParticularProduct.aspx will look like below, 


<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ParticularProduct.aspx.cs" Inherits="RoutingDemo.WebForm2" %>



   
   


Now we need to write code to fetch data from LINQ to SQL class 


ParticularProduct.aspx.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RoutingDemo.Model;


namespace RoutingDemo
{
   public partial class WebForm2 : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {
           GridView1.DataSource = new Model.Product[]{ Products };
           GridView1.DataBind();
       }
       private Product _Product = null;
       protected Product Products
       {
           get
           {
               if (_Product == null)
               {
                   string prdName = Page.RouteData.Values["Name"] as string;
                   NorthWindProduct_DataContext context = new NorthWindProduct_DataContext();
                   return context.Products.Where(prd => prd.ProductName.Equals(prdName)).SingleOrDefault();
               }
               return _Product;
           }
       }
   }
}


Explanation of Code 
  1. Put the namespace 

    24.gif
  2. Created a protected property. In getter, I am checking for data member.  If it is null, then I am creating instance of NorthWindProduct and fetching product with the given name 

    25.gif

If you see the above code, I am using 


26.gif



Here Name is the parameter name in the Route URL. 


Step 5


Now open Global.asax 


27.gif



When you click on Global.ascx.cs . You will get below default code 


28.gif

Now we need to add 
  1. Namespace 

    29.gif

  2. Method 

    30.gif

    In first mapPageRoute 

    All Product -> name of the rule in Global.ascx
    Products/All -> Routing URL 
    ~/AllProduct.aspx -> Name of the physical aspx file. 

    In second mapPageRoute 

    Selected Product -> name of the rule in Global.ascx 
    Products/Selected/ {name} -> Routing URL where name is the parameter 
    ~/ParticularProduct.aspx -> name of the physical file 

  3. Call the above created method  in application start 

    31.gif

Global.ascx.cs 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.Routing;


namespace RoutingDemo
{
   public class Global : System.Web.HttpApplication
   {
       void Application_Start(object sender, EventArgs e)
       {
           RegisterRoutes(RouteTable.Routes);
       }
       void Application_End(object sender, EventArgs e)
       {
           //  Code that runs on application shutdown
       }
       void Application_Error(object sender, EventArgs e)
       {
           // Code that runs when an unhandled error occurs
       }
       void Session_Start(object sender, EventArgs e)
       {
           // Code that runs when a new session is started
       }
       void Session_End(object sender, EventArgs e)
       {
           // Code that runs when a session ends.
           // Note: The Session_End event is raised only when the sessionstate mode
           // is set to InProc in the Web.config file. If session mode is set to StateServer
           // or SQLServer, the event is not raised.
       }
       void RegisterRoutes(RouteCollection routes)
       {
           routes.MapPageRoute("All Product", "Products/All", "~/AllProduct.aspx");
           routes.MapPageRoute("Selected Product", "Products/Selected/{name}", "~/ParticularProduct.aspx");
       }
   }
}


Step 6


Step 6a


Now open default.aspx
  1. Drag two buttons from tool box  and put on the page 
  2. Drag a text box and put on the page 
  3. Attach button click handler for both the button 

Default.aspx


<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
   CodeBehind="Default.aspx.cs" Inherits="RoutingDemo._Default" %>



   

Welcome to ASP.NET 4.0 Routing Feature




Step 7


On click event of btnAllProducts 


32.gif 


There is no input parameter. 


On click event of btnSelectedProduct 


33.gif

Here input parameter to navigate is in txtSearch text box. 


Default.aspx.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace RoutingDemo
{
   public partial class _Default : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {
           txtSearch.Text = "";
       }
       protected void btnAllProducts_Click(object sender, EventArgs e)
       {
           Response.RedirectToRoute("All Product");
       }
       protected void btnSelectedProduct_Click(object sender, EventArgs e)
       {
           Response.RedirectToRoute("Selected Product", new { name = txtSearch.Text });
       }
   }
}

Run the application 


34.gif

If you notice the above output and URL in address bar, it is 


http://localhost:36774/Default.aspx


Now on clicking of All Products 


35.gif

Now if you see the URL in address bar


http://localhost:36774/Products/All


And this URL is search engine optimized URL. 


In the same way when you click on Select Product button it will navigate to 


http://localhost:36774/Products/Selected/Chai 


Chai is the product name.


Conclusion 


In this article, we saw what Routing mapping feature of ASP.Net 4.0. I hope this article was useful. Thanks for reading. Happy coding.

You can also download the sample code used in the above example.


 Subscribe to Articles

     

Further Readings:

Responses
Author: Atul Kath         Company URL: http://www.fresherpoint.com
Posted Date: April 02, 2012

For more discription about asp.net 4.0 routing follow this article

http://fresherpoint.com/articles/index.php/dynamic-static-asp-net-routing-and-url-rewrite-solved/

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend