HowTo: Microsoft ASP.NET AJAX (PageMethods – Webmethoden aufrufen ohne ASMX Datein)

In diesemテつHowTo erklテ、rte ich, wie man eine ASMX Datei so erweitern kann, dass man die Methoden auch テシber Javascript (und テシber den ScriptManager) zugテ、nglich macht.
Da man allerdings nicht immer eine ASMX Datei erstellen will um vielleicht nur eine kleine Aufgabe zu erledigen gibt es die so genannten PageMethods.

Da das nicht weiter schwer ist, werde ich kurz die Schritte zeigen:

Schritt 1: AJAX Enabeld Website erstellen & ScriptManager anpassen

Durch das Template (wie man das bekommt, ist hier beschrieben)

<asp:ScriptManager ID=”ScriptManager1″ runat=”server” EnablePageMethods=”True” />

Wichtig hierテつist das “EnablePageMethods” auf “True” zu setzen.

Schritt 2: Die PageMethod in der Code Behind erstellen

Meine einfache PageMethod sieht so aus:

[WebMethod]
public static string HelloWorld(string name)
{
テつテつテつ return “Hello World ” + name;
}

Die wichtigen Teile sind fett markiert. Fテシr das “WebMethod” Attribut muss der Namespace “System.Web.Services” eingebunden werden. Erst durch dieses Attribut baut der ScriptManager den JS Wrapper drum herum.
Der nテ、chste (und sehr wichtige Punkt) – nur statische Methoden kテカnnen genutzt werden. Um die Objekthierarchie von ASP.NET nicht zu zerstテカren, kテカnnen keine Instanzmethoden aufgerufen werden. In der CTP ging dies wohl noch, wurde aber aus Sicherheitsgrテシnden aus dem Release herausgenommen. Allerdings hat man Zugriff auf die Session oder kann dort andere Klassen aufrufen.

Schritt 3: Die Methode im Javascript ansprechen

Die entscheidente Javascriptzeile (die Demoapplikation kann unten runtergeladen werden):

PageMethods.HelloWorld(“Robert”, onComplete);

テ彙er das Javascript Objekt “PageMethods” sind alle Methoden zu finden, welche mit dem WebMethod-Attribut ausgestattet sind und statisch sind. Dann einfach die jeweilige Methode aufrufen und freuen.

image

[Download Demo Source Code]

Letzte Posts

  • image_thumb.png
    NuGet Package Restore & Build Server wie z.B. AppVeyor

    NuGet ist ja mittlerweile weit verbreitet, aber eine Frage stellt sich natテシrlich immer noch: Checkt man die NuGet Packages ein oder nicht? In meinem kleinen Side-Projekt, welches auf GitHub liegt und ich テシber AppVeyor auch bauen lasse nutze ich das Package Restore Feature von NuGet, d.h. in meinem Repository befindet sich kein NuGet Package mehr, […]

  • image.png
    Microsoft Account Login via ASP.NET Identity

    Der Microsoft Account ist die zentrale Identifikationsstelle in der 窶廚onsumer-Microsoft-Welt窶, allerdings ist das Einbinden eben dieser in die eigene Applikation eher schwierig. Das 窶廰ive SDK窶 ist nun unter dem OneDrive Dev Center zu finden und ganz professionell wurden auch alle Links zum alten Live SDK damit unbrauchbar gemacht. Beim Microsoft Account ist es auch unmテカglich […]

  • image.png
    Zeitgesteuerte Azure WebJobs – so einfach kann Azure sein

    Das noch in Entwicklung befindliche Azure WebJob SDK bietet einige coole Features zum Verarbeiten und Bereitstellen von Daten. Bekanntes Beispiel ist das Sample welches auf eine Azure Queue lauscht und sobald ein Item da vorhanden ist anfテ、ngt dies zu verarbeiten. Szenario: Zeitgesteuerte Aktivitテ、ten 窶 ohne Queue und co. Mein Szenario war allerdings wesentlich trivialer: Ich […]

  • image.png
    Get Involved in OSS! Ja, aber wie geht das denn mit GitHub?

    Auch im .NET Lager gibt es Bewegung im OSS Bereich und es gibt verschiedene Arten wie man bei einem Open Source Projekt 窶廚ontributed窶. Was zテ、hlt alles zu 窶廚ontribution窶? Unter 窶廚ontribution窶 lテ、uft eigentlich alles 窶 ob es Fragen/Probleme zu dem Projekt via Issues ist oder Dokumentation nachreicht oder ob man darテシber bloggt oder das Projekt vorstellt. […]

  • HowTo: Web.config samt eigener ConfigSection zur Laufzeit ändern

    In dem HowTo geht es darum wie man die Web.config zur Laufzeit テ、ndert und was es dabei zu beachten gilt. Das ganze klappt auch mit komplexeren ConfigSections. Eigene ConfigSection? Vor einer ganzen Weile habe ich mal テシber das Erstellen einer eigenen ConfigSection geschrieben 窶 im Grunde nutzen wir jetzt fast dieselbe Config. Zur Laufzeit? Startet […]

Support us!