Tags: , , | Categories: ASP.Net, VB.Net Posted by Christoph on 10/16/2009 3:28 PM | Comments (0)

Für die Benutzung von SEO freundlichen URLs (Search Engine Optimisation) benutze ich das URL Rewriting Modul des IIS (-> http://www.iis.net/extensions/URLRewrite).

Wenn nun ein Datapager z.B. an ein Listview Control gebunden wird, benutzt dieser leider als Linkadresse nicht die “schöne” URL, sondern die aus dem Rewriting entstehende URL.

Man kann dem Datapager aber mit dieser Funktion die neuen (schönen) Links beibringen:

Private Sub FixPagerURLs(ByVal Pager As DataPager)
    For Each Pag As DataPagerFieldItem In Pager.Controls
        For Each Ctrl In Pag.Controls
            If TypeOf Ctrl Is HyperLink Then
                Dim Hyp As HyperLink = Ctrl

                Dim Req = Hyp.NavigateUrl.Replace(Request.Path, "").Replace("?", "")
                Dim Params = Req.Split("&")
                Dim NewPage = (From item In Params Where item.StartsWith("page")).FirstOrDefault

                Dim URL = Request.RawUrl
                If URL.Contains("?") Then URL = URL.Substring(0, URL.IndexOf("?"))

				If NewPage = "page=1" Then
					Hyp.NavigateUrl = URL
				Else
					Hyp.NavigateUrl = String.Concat(URL, "?", NewPage)
				End If

            End If
        Next
    Next
End Sub

und den dann im DataBound Event des Listview aufrufen:

FixPagerURLs(dpProducts)

Die Idee dazu habe ich von dieser Webseite:
http://blog.anasghanem.com/post/Programmatically-Modifying-the-HyperLinks-in-the-DataPager-control.aspx

Comments