The blog will explin how we can achieve url rewriting in ASP.net 3.5 or Over.
Step1 : Create a helper class title "SiteRouteHandler.cs".
1: #region System
2: using System;
3: using System.Collections.Generic;
4: using System.Linq;
5: using System.Web;
6: using System.Web.UI;
7: using System.Web.Routing;
8: using System.Web.Compilation;
9: #endregion
10: 11: namespace UrlRewrite
12: {13: 14: /// <summary>
15: /// Handler for routing
16: /// </summary>
17: public class SiteRouteHandler : IRouteHandler
18: {19: 20: #region Properties
21: 22: /// <summary>
23: /// Page Virtual Path
24: /// </summary>
25: public string PageVirtualPath { get; set; }
26: 27: #endregion
28: 29: #region Implements IRouteHandler
30: 31: /// <summary>
32: /// Gets the handler in return
33: /// </summary>
34: /// <param name="requestContext"></param>
35: /// <returns></returns>
36: public IHttpHandler GetHttpHandler(RequestContext requestContext)
37: {38: 39: Page page = BuildManager.CreateInstanceFromVirtualPath(PageVirtualPath,typeof(Page)) as Page;
40: foreach (var item in requestContext.RouteData.Values)
41: {42: 43: HttpContext.Current.Items["qparam." + item.Key] = item.Value;
44: }45: 46: return page;
47: }48: 49: #endregion
50: }51: 52: }Step 2 : In global.asax.cs file declare the routes you want to give to
the pages with a particular pattern. Use the SiteHandler class for getting the params
mentioned in the route pattern. The "{ID}", "{AspxPage}" and "{PageNumber}" are
the dynamic values which can be used on our aspx page for manupulation. Than according
to the pattern "123" is {ID}, "This-is-a-blog" is {AspxPage} and 32 is {PageNumber}.
"~/Blog.aspx" is the actual page.
1: using System.Web.Routing;
2: protected void Application_Start(object sender, EventArgs e)
3: { 4: 5: //Clears all route
6: RouteTable.Routes.Clear(); 7: 8: //Handles the route
9: RouteTable.Routes.Add("Blog", new Route("blog/{ID}/{AspxPage}.aspx/{PageNumber}", new
10: SiteRouteHandler() { PageVirtualPath = "~/Blog.aspx" }));
11: }12: Step 3 : Now on Blog.aspx we can use params to retrieve the data.
1: /// <summary>
2: /// The blog id from the query string
3: /// </summary>
4: private int BlogID
5: { 6: 7: get 8: 9: {10: 11: if (Context.Items["qparam.ID"] == null)
12: {13: 14: return 0;
15: }16: 17: return Convert.ToInt32(Context.Items["qparam.ID"]);
18: }19: 20: }21: 22: 23: /// <summary>
24: /// The blog id from the query string
25: /// </summary>
26: private string AspxPage
27: {28: 29: get30: 31: {32: 33: if (Context.Items["qparam.AspxPage"] == null)
34: {35: 36: return string.Empty;
37: }38: 39: return Context.Items["qparam.AspxPage"].ToString();
40: }41: 42: }43: 44: 45: /// <summary>
46: /// The Page Number
47: /// </summary>
48: private int PageNumber
49: {50: 51: get52: 53: {54: 55: if (Context.Items["qparam.PageNumber"] == null)
56: {57: 58: return 0;
59: }60: 61: return Convert.ToInt32(Context.Items["qparam.PageNumber"]);
62: }63: 64: }
0 comments:
Post a Comment