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:
Die Idee dazu habe ich von dieser Webseite:
http://blog.anasghanem.com/post/Programmatically-Modifying-the-HyperLinks-in-the-DataPager-control.aspx
975765dc-a6ab-4772-9930-c07023197a08|0|.0