Dino talks

Asynchrone Links in ASP.NET MVC
Kommentare

Da ASP.NET MVC vor allem dafür konzipiert ist, Entwicklern die vollkommene Kontrolle über das auszugebende HTML zu bieten, ist direktes Skripting das vielleicht einfachste Verfahren, um AJAX-Fähigkeiten in Ansichten einzubinden. Mithilfe der jQuery-Funktionen oder der Microsoft ASP.NET AJAX-Clientbibliothek führen Sie asynchrone Aufrufe aus dem Skript aus und erhalten JSON-Daten oder was immer Sie mögen. Außerdem können Sie die AJAX-Hilfsmethoden verwenden.

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.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -