How to implement URL Routing in asp.net 4.0 Web Forms like MVC

Introduction

In this post, I explain how to implement URL Routing in asp.net 4.0 Web Forms like MVC.

One of the best new features of ASP.NET WebForms 4.0 is URL Routing.
Using this features we can transform complex URLs into simple, search engine friendly, easily understood by users and consistent Web addresses.



We can do this by following this below steps.

Here I create a project consisting 5 pages

Pages
After Rewrite URL
Used for
1. Default.aspx/Defaulthome page
2. About.aspx/Aboutabout us page
3. Contact.aspx/Contactfor show contact information
4. OurProduct.aspx/ProductListfor show product list
5. ProductDetails.aspx/Product/Details/{id}for show selected product details

Steps :

Just follow the steps and get result easily.

Step-1 : Create New Project

Go to File > New > Project > Select asp.net web forms application > Entry Application Name > Click OK.

Step-2: Write code for URL Routing in Global.asax.cs page.

Write the followings code in Application_Start event of Global.asax.cs page.

void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("Home""Home""~/Default.aspx");
            routes.MapPageRoute("About""About""~/About.aspx");
            routes.MapPageRoute("Contact""Contact""~/Contact.aspx");
            routes.MapPageRoute("OurProducts""ProductList""~/OurProducts.aspx");
            routes.MapPageRoute("ProductDetails""Product/Details/{id}""~/ProductDetails.aspx");
        }

        void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            AuthConfig.RegisterOpenAuth();
            RegisterRoutes(RouteTable.Routes);

        }

Modify Menu Link in site.master page.
Replace with this

<ul id="menu">
    <li><a runat="server" href="Home">Home</a></li>
    <li><a runat="server" href="About">About</a></li>
    <li><a runat="server" href="Contact">Contact</a></li>
</ul>

Step-3: Add a Database.

Go to Solution Explorer > Right Click on App_Data folder > Add > New item > Select SQL Server Database Under Data > Enter Database name > Add.

Step-4: Create a table and insert data.

Open Database > Right Click on Table > Add New Table > Add Columns > Save > Enter table name > Ok.

Step-5: Add Entity Data Model.

Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select ADO.net Entity Data Model under data > Enter model name > Add.
A popup window will come (Entity Data Model Wizard) > Select Generate from database > Next >
Chose your data connection > select your database > next > Select tables > enter Model Namespace > Finish.

Step-6: Create page for show list of product.

Go to Solution Explorer > Right Click on Project under solution explorer > Add > New item > Select Web Form under Web > Enter Name > Add.


Gridview Design


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
                CellPadding="10" CellSpacing="1" BackColor="Black"
                RowStyle-BackColor="White"
                HeaderStyle-BackColor="White">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <div><img src='ProductImage/<%#Eval("ImagePath")%>' width="50px" border="0"/></div>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField HeaderText="Product" DataField="ProductName" />
                <asp:BoundField HeaderText="Price" DataField="Price" />           
                <asp:BoundField HeaderText="Category" DataField="Category" />
                <asp:TemplateField>
                    <ItemTemplate>
                       <a href='Product/Details/<%#Eval("ProductID").ToString()%>'>View Details</a>
                    </ItemTemplate>
                </asp:TemplateField>               
            </Columns>

        </asp:GridView>

Write the followings code in your page load event for fetch Data from Database.

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulateProduct();
            }
        }

        private void PopulateProduct()
        {
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                var v = dc.ProductMasters.ToList();
                GridView1.DataSource = v;
                GridView1.DataBind();
            }

        }

Step-7: Create page for show product details.

Go to Solution Explorer > Right Click on Project under solution explorer > Add > New item > Select Web Form under Web > Enter Name > Add.


Design for Product Details


<h2>Product Details</h2>
    <table border="0" cellpadding="0" cellspacing="5">
        <tr>
            <td rowspan="6">
                <asp:Image ID="Image1" runat="server" Width="120px"  />
            </td>
            <td>Product Name :</td>
            <td>
                <asp:Label ID="lblProductName" runat="server" />
            </td>
        </tr>
        <tr>
            <td>Price : </td>
            <td>
                <asp:Label ID="lblPrice" runat="server" />
            </td>
        </tr>
        <tr>
            <td>Available Colors :</td>
            <td>
                <asp:Label ID="lblAvailableColors" runat="server" />
            </td>
        </tr>
        <tr>
            <td>Brand :</td>
            <td>
                <asp:Label ID="lblBrand" runat="server" />
            </td>
        </tr>
        <tr>
            <td>Category :</td>
            <td>
                <asp:Label ID="lblCategory" runat="server" />
            </td>
        </tr>
        <tr>
            <td></td>
            <td>
                <asp:Button ID="btnAddToCart" runat="server" Text="Add to cart" />
            </td>
        </tr>

    </table>

Write the followings code in your page load event for fetch Data from Database.

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int productID = 0;
                string queryString = Page.RouteData.Values["id"] as string;
                if (int.TryParse(queryString, out productID))
                {
                    PopulateProductDetails(productID);
                }
            }
        }

        private void PopulateProductDetails(int productID)
        {
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                var v = dc.ProductMasters.Where(a => a.ProductID.Equals(productID)).FirstOrDefault();
                if (v != null)
                {
                    Image1.ImageUrl = "~/ProductImage/" + v.ImagePath;
                    lblProductName.Text = v.ProductName;
                    lblPrice.Text = v.Price.ToString();
                    lblBrand.Text = v.Brand;
                    lblAvailableColors.Text = v.AvailableColors;
                    lblCategory.Text = v.Category;
                }
            }

        }



This is for getting Query String value.

string queryString = Page.RouteData.Values["id"as string;

Step-8: Run Application.


Hello ! My name is Sourav Mondal. I am a software developer working in Microsoft .NET technologies since 2010.

I like to share my working experience, research and knowledge through my site.

I love developing applications in Microsoft Technologies including Asp.Net webforms, mvc, winforms, c#.net, sql server, entity framework, Ajax, Jquery, web api, web service and more.