Routing, the Query String and existing WebForms URLs

684 views Asked by At

I have a WebForms application and was thinking about using routing for friendlier URLs. However, during my tinkering I discovered that the query string parameters which are a part of a route are no longer available via Request.QueryString (which makes sense). Ideally, I'd like to still be able to have those values available from the QueryString collection so I don't have to update the hundreds of pages using the query string values to use the route data values instead. For example, so I don't have to replace this:

var foo = Request.QueryString["foo"];

with this:

var foo = RouteData.Values["foo"];

I was thinking of using URL Rewrite instead but I'd eventually like to take advantage of named routes for redirection and hyperlinks.

Is there a way to use routing without updating every single page to use the RouteData collection instead of the QueryString collection?

1

There are 1 answers

2
davut temel On

in global.asax

void RegisterRoutes(RouteCollection routes)
    {
         routes.MapPageRoute("Products","Products/{id}/{productname}",
                           "~/productdetails.aspx");
}

in products.aspx

<ahref='<%#string.Format("/Products/{0}/{1}",Eval("id"),Clean.CleanUrl(Eval("ProductName").ToString())) %>'><%# Eval("ProductName") %></a>

in productsdetails.aspx.cs

if (!IsPostBack)
        {
            if (RouteData.Values["id"] != null)
            {
               loadproduct();

            }
}

void loadproduct()
{
 select .............  where id= RouteData.Values["id"].ToString();
}

This is Clean Class

public static class Clean
    {
        public static string CleanURL(this string kelime)
        {
            if (kelime == "" || kelime == null) { return ""; }
            kelime = kelime.Replace("ş", "s");
            kelime = kelime.Replace("Ş", "S");
            kelime = kelime.Replace(".", "");
            kelime = kelime.Replace(":", "");
            kelime = kelime.Replace(";", "");
            kelime = kelime.Replace(",", "");
            kelime = kelime.Replace(" ", "-");
            kelime = kelime.Replace("!", "");
            kelime = kelime.Replace("(", "");
            kelime = kelime.Replace(")", "");
            kelime = kelime.Replace("'", "");
            kelime = kelime.Replace("ğ", "g");
            kelime = kelime.Replace("Ğ", "G");
            kelime = kelime.Replace("ı", "i");
            kelime = kelime.Replace("I", "i");
            kelime = kelime.Replace("ç", "c");
            kelime = kelime.Replace("ç", "C");
            kelime = kelime.Replace("ö", "o");
            kelime = kelime.Replace("Ö", "O");
            kelime = kelime.Replace("ü", "u");
            kelime = kelime.Replace("Ü", "U");
            kelime = kelime.Replace("`", "");
            kelime = kelime.Replace("=", "");
            kelime = kelime.Replace("&", "");
            kelime = kelime.Replace("%", "");
            kelime = kelime.Replace("#", "");
            kelime = kelime.Replace("<", "");
            kelime = kelime.Replace(">", "");
            kelime = kelime.Replace("*", "");
            kelime = kelime.Replace("?", "");
            kelime = kelime.Replace("+", "-");
            kelime = kelime.Replace("\"", "-");
            kelime = kelime.Replace("»", "-");
            kelime = kelime.Replace("|", "-");
            kelime = kelime.Replace("^", "");
            return kelime;
        }
    }