URL rewriting through global.aspx
---------------------------------------------------------------------------------
At global file
................
<%@ Import Namespace="System.Web.Routing" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
// for dynamic url like this
routes.MapPageRoute("PersonDetails", "product/{FirstName}/{id}", "~/product.aspx");
//for static url like this
routes.MapPageRoute("ContactUss", "ContactUs", "~/ContactUs.aspx");
}
</script>
-----------------------------------------------------------------------
Create a class file with name "CustomRouteHandler"
..........
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.Compilation;
using System.Web.Routing;
public interface IRoutablePage
{
RequestContext RequestContext { set; }
}
public class CustomRouteHandler : IRouteHandler
{
public CustomRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public string VirtualPath { get; private set; }
public IHttpHandler GetHttpHandler(RequestContext
requestContext)
{
var page = BuildManager.CreateInstanceFromVirtualPath
(VirtualPath, typeof(Page)) as IHttpHandler;
if (page != null)
{
var routablePage = page as IRoutablePage;
if (routablePage != null) routablePage.RequestContext = requestContext;
}
return page;
}
}
----------------------------------------------------------------------------------
Calling side coding
At Aspx page
<asp:HyperLink ID="HyperLink1" runat="server" > click here </asp:HyperLink>
-----------------------------------------------------------------
At cs page for sending request
page_load() //at page load
{
HyperLink1.NavigateUrl = WriteUrl("kumar", "12");
}
protected string WriteUrl(string fname, string ID)
{
return Page.GetRouteUrl("PersonDetails", new { FirstName = fname, id = ID });
}
-----------------------------------------------------------------
At the called page side
if you want to access url query string then can write like this
at page load or any where you want on called page
using
var thePath = RouteData.Values["name"];
0 comments:
Post a Comment