Asp.Net 4.0 Url Routing

Url Routing (Url Yönlendirme) işlemini ne kadar SEO için yapsak da, ziyaretçilerimizin sayfalarda bilinçli gezmeleri açısından da önemlidir. Asp.Net 4.0 ile gelen Url Routing özelliği ile url'lerimiz daha sağlıklı ve profesyonel oluyor. Sayfalarca kod yazmıyor, url'lere karmaşık taklalar attırmıyoruz. Sitemde de kullandığım Url Routing konusunu detaylıca inceleyelim.



Yukarıdaki resimde görüldüğü üzere projemize Global.asax, anasayfa.aspx ve detay.aspx ekliyoruz.

Global.asax içine aşağıdaki kodları yazıyoruz:

<%@ Application Language="C***quot; %>
<%@ Import Namespace="System.Web.Routing" %>
<script RunAt="server">

void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}

public void RegisterRoutes(RouteCollection routes)
{
//KonuDizin parametresi ile, baslik/id olarak, detay.aspx sayfasinda görünecek.
routes.MapPageRoute("KonuDizin", "{KonuBaslik}/{KonuId}", "~/detay.aspx");
}
</script>


anasayfa.aspx sayfasını datalist ile doldurduğunuzu varsayalım ve datalistin içine erişelim:

foreach (DataListItem item in datalist_idniz.Items)
{
//datalistin içinde bulunan componentlere erişim için
HyperLink link = (HyperLink)item.FindControl("LinkHyper");
Literalid = (Literal)item.FindControl("IdLiteral");

//url router için Global.asax değerlerini alabilmek için
RouteValueDictionary param = new RouteValueDictionary();
param.Add("KonuBaslik", this.KarakterDuzelt(link.Text.ToString()));
param.Add("KonuId", id.Text);

//link yapımızı oluşturuyoruz
VirtualPathData path = RouteTable.Routes.GetVirtualPath(null, "KonuDizin", param);
link.NavigateUrl = path.VirtualPath;
}

Url'lerimiz de Türkçe karater sorunu olmaması için anasayfa.aspx'e aşağidaki class'ımızı ekleyelim.

private string KarakterDuzelt(string metin)
{
string Temp = metin.ToLower();
Temp = Temp.Replace("-", ""); Temp = Temp.Replace(" ", "-");
Temp = Temp.Replace("ç", "c"); Temp = Temp.Replace("g", "g");
Temp = Temp.Replace("i", "i"); Temp = Temp.Replace("ö", "o");
Temp = Temp.Replace("s", "s"); Temp = Temp.Replace("ü", "u");
Temp = Temp.Replace("\"", ""); Temp = Temp.Replace("/", "");
Temp = Temp.Replace("(", ""); Temp = Temp.Replace(")", "");
Temp = Temp.Replace("{", ""); Temp = Temp.Replace("}", "");
Temp = Temp.Replace("%", ""); Temp = Temp.Replace("&", "");
Temp = Temp.Replace("+", ""); Temp = Temp.Replace(".", "");
Temp = Temp.Replace("?", ""); Temp = Temp.Replace(",", "");
Temp = Temp.Replace("'", "-"); Temp = Temp.Replace("!", "");
return Temp;
}

Anasayfamıza ekledigimiz HyperLink'in yapısı aşağıdaki şekilde olmalı:

<asp:HyperLink ID="LinkHyper" runat="server"></asp:HyperLink></div>


Şimdi detay.aspx sayfasına yeni bir datalist ekleyip içini konu_id ye göre aşağıdaki şekilde dolduracağız:

DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM konular WHERE konu_id=@id", baglanti);
da.SelectCommand.Parameters.AddWithValue("@id", RouteData.Values["KonuId"].ToString());
da.Fill(dt);
DetayDataList.DataSource = dt;
DetayDataList.DataBind();

Amacımıza ulaştığımızı düşünerekten projemizi derliyoruz ve aşağıda belirtilen resimlerde ki gibi olmasını ümit ediyoruz.





Asp.Net 4.0 için Url Routing çalışma dosyasını BURADAN indirebilirsiniz.



Alıntı: https://www.orcunokan.com/aspnet-40-url-routing/3