Am einfachsten lassen sich AJAX-Fähigkeiten einer ASP.NET MVC-Ansicht über direktes Skripting hinzufügen. Da Sie in ASP.NET MVC-Anwendungen die Kontrolle über nahezu jedes winzige HTML-Stück erhalten, stehen Sie niemals Problemen mit Element-IDs gegenüber, wie es bei Webformularen zu oft der Fall ist. Möglicherweise kennen Sie die verwendete ID, um auf ein bestimmtes HTML-Element zu verweisen, genau und können es in sicherer Weise via Skript ansprechen. Bei direktem Skripting schreiben Sie letztlich reinen JavaScript-Code, um die Anforderung zu senden, und – was vor allem wichtig ist -, um irgendwelche Ergebnisse in das vorhandene Dokumentobjektmodell einzubetten. Wenn Sie sich mit JavaScript – aus was für Gründen auch immer – nicht intensiv auseinandersetzen möchten, suchen sie vielleicht nach alternativen Möglichkeiten, was sich mit AJAX aus ASP.NET MVC-Ansichten heraus bewerkstelligen lässt. Lesen Sie weiter und finden es heraus.
Die AJAX-Hilfsklasse im Überblick
ASP.NET MVC bringt die AJAX-Hilfsklasse mit, die für das Ausführen von asynchronen Abfragen zuständig ist. Die AJAX-Hilfsklasse und ihre Erweiterungsmethoden geben trotzdem JavaScript-Code in der Ansicht aus, nur dass Sie als Entwickler nicht viel davon sehen (und ihn nicht direkt schreiben). Eine Instanz der Klasse AjaxHelper wird der Klasse ViewPage über die Eigenschaft Ajax, die folgendermaßen definiert ist, verfügbar gemacht:
public class ViewPage : Page, IViewDataContainer
{
:
public AjaxHelper Ajax { get; set; }
}
Die Klasse fügt die gesamte Unterstützung ein, die für die Implementierungen von AJAX-Features innerhalb einer ASP.NET-MVC-Ansicht erforderlich ist. Die Klasse AjaxHelper ist definiert, wie in Listing 1 zu sehen:
public class AjaxHelper { public AjaxHelper(ViewContext viewContext, IViewDataContainer viewDataContainer); public AjaxHelper(ViewContext viewContext, IViewDataContainer viewDataContainer, RouteCollection routeCollection); public RouteCollection RouteCollection { get; private set; } public ViewContext ViewContext { get; private set; } public ViewDataDictionary ViewData { get; } public IViewDataContainer ViewDataContainer { get; private set; } }
Listing 1
Wichtiger noch als der Quellcode der Klasse AjaxHelper ist die Liste der Erweiterungsmethoden, die im Framework definiert sind. Tabelle 1 führt die Erweiterungsmethoden für die Klasse AjaxHelper auf.
Methode | Beschreibung |
---|---|
ActionLink | Gibt ein Anker-Tag aus, das auf den URL für die angegebene Aktion verweist. |
BeginForm | Gibt ein Formular-Tag mithilfe von Ad-hoc-JavaScript-Code aus, um Inhalte zu senden. Der URL der Aktion wird in Form eines Action Link ausgedrückt. |
BeginRouteForm | Gibt ein Formular-Tag mithilfe von Ad-hoc-JavaScript-Code aus, um Inhalte zu senden. Der URL der Aktion wird in Form eines Route Links ausgedrückt. |
RouteLink | Gibt ein Anker-Tag aus, das auf den URL für die angegebene Route verweist. |
Tabelle 1: Erweiterungsmethoden für die Klasse „AjaxHelper“
Es gibt zwar nicht viele Erweiterungsmethoden, doch gehört zu jeder eine lange Liste von Überladungen. Wesentlich ist, dass alle in Tabelle 1 angegebenen Erweiterungsmethoden einen Link ausgeben, der beim Anklicken eine asynchrone Anforderung zum angegebenen URL auslöst.