Die Neuerungen von ASP.NET 4.0 (Teil 3)
Während es in der letzten Folge um das Thema URL-Routing ging, steht in dieser Folge das mit ASP.NET 4.0 eingeführte Steuerelement QueryExtender auf dem Programm, mit dem sich generische Suchmasken realisieren lassen.
» Von , 03.01.2011 16:15.
Eine Anforderung, die bei nahezu jeder geschäftlichen Web-Anwendung besteht, ist eine Suchmaske, die möglichst viele Suchkriterien vereinigt. Die Frage, die dabei stets aufs Neue beantwortet werden muss ist, welche Felder Teil der Suchmaske sein sollen. Eine Lösung kann eine generische Suchmaske sein, die alle in Frage kommenden Felder zusammenfasst, die per logische Verknüpfungen kombiniert werden. Eine solche generische Suchmaske konnte bereits mit früheren ASP.NET-Versionen umgesetzt werden, mit dem QueryExtender-Control von ASP.NET 4.0 wird es aber deutlich einfacher.
Bis .NET 3.5 musste die Datenquelle explizite Abfragen enthalten, um gefilterte Ergebnislisten abrufen zu können. Kommt eine SQL-basierte Datenquelle zum Einsatz, wird die notwendige Where-Bedingung dynamisch zur Laufzeit zusammengesetzt. Dieses Vorgehen ist aber aus mehrfacher Hinsicht nicht optimal. Zum einen entspricht dies nicht einer guten Softwarearchitektur und zum anderen eröffnet sie unter Umständen einen Angriffspunkt für „SQL Injection“. Auch sind die möglichen Filterbedingungen innerhalb eines SQL-Statements begrenzt.
Verbesserungen durch Datenquellen-Controls
Eine erste Verbesserung wurde mit den verschiedenen Datasource-Controls (LinqDataSource, EntityDataSource , ObjectDataSource, SqlDataSource und AccessDataSource) unter .NET 2.0 erzielt. Über Parameter ermöglichen sie eine Sortierung und Filterung zur Laufzeit. Das Beispiel in Abb. 1 verdeutlicht den Einsatz des SQLDataSource-Controls. Innerhalb eines GridView werden Produktdatensätze angezeigt, über das Eingabefeld txtFilter kann nach Produktnamen gefiltert werden. Das zuständige SQLDataSource-Contol erledigt dies über den definierten Filterparameter sowie die festgelegte FilterExpression.

Abb. 1: . Das SqlDataSource-Control filtert mit dem FilterParameter



KOMMENTARE
KOMMENTAR SCHREIBEN