Autor: Dflying Chen ( http://dflying.cnblogs.com/ )
Die vorherigen Artikel rufen alle direkt einen einzelnen Webdienst auf. Bei der tatsächlichen Projektentwicklung, insbesondere bei der Konvertierung bestehender Projekte, ist das Extrahieren der Logik in der Seite in einen speziellen Webdienst jedoch häufig mit ziemlich viel Arbeit verbunden. Atlas berücksichtigt dies und ermöglicht Ihnen das Hinzufügen des [WebMethod]-Attributs zur serverseitigen öffentlichen Methode, um direkte Aufrufe von clientseitigem JavaScript zu ermöglichen.
Damit Clients in ASPX-Seiten definierte Methoden direkt aufrufen können, müssen Sie die Methode als öffentlich angeben und das Attribut [WebMethod] hinzufügen, z. B. die folgende serverseitige Methode, die in der ASPX-Datei definiert ist:
<script runat="server">
[WebMethod]
public int AddInt(int int1, int int2)
{
return int1 + int2;
}
</script>
Auf der Clientseite erstellt Atlas für Sie ein Mashup einer AddInt-JavaScript-Methode, die in einem speziellen Namespace PageMethods vorhanden ist, sodass Sie die obige Methode über PageMethods.AddInt() aufrufen können.
Gleichzeitig können Sie durch Definieren der WebMethod in der ASPX-Seite auch auf die Werte und den ViewState der serverseitigen Steuerelemente auf allen Seiten dieser Methode zugreifen, und der Lebenszyklus der gesamten Seite ist derselbe Die traditionelle ASP.NET-Seite PostBack, wie z. B. Page_Load Alle anderen Methoden werden aufgerufen, was uns einen stärkeren Zugriff auf die Seite ermöglicht. Dies bringt jedoch auch einen Leistungsnachlass mit sich, da bei jedem Aufruf der Webmethode die ViewState- und Steuerwerte auf der Seite an den Server zurückgegeben werden und der gesamte Seitenlebenszyklus serverseitig verarbeitet wird wird länger dauern als nur die Verarbeitung einer reinen Webmethode. Die in ASMX definierte Webmethode ist viel komplizierter. Daher empfehle ich hier, so viel wie möglich den reinen Webdienst zu verwenden. Bitte beachten Sie: Es wird empfohlen, bei der serverseitigen Atlas-Implementierung den Webdienst anstelle der Seitenmethode zu verwenden.
Schauen wir uns ein Beispiel an. Definieren wir zunächst die WebMethod in ASPX. Sie können sehen, dass sie nicht nur die Summe zweier Zahlen findet, sondern auch auf den Wert der serverseitigen TextBox auf einer Seite zugreift:
<script runat="server ">
[WebMethod]
öffentliche Zeichenfolge AddInt(int int1, int int2)
{
return (int1 + int2).ToString() + string.Format("rnUnd der Text der Server-TextBox ist '{0}'.", tbServer.Text);
}
</script>
Dann gibt es noch den ScriptManager der Seite. Hier müssen keine Referenzen hinzugefügt werden: <atlas:ScriptManager ID="scriptManager" runat="server" />
Dann gibt es zwei Eingaben zur Eingabe des Summanden und eine Eingabe zum Auslösen des Serveraufrufs:
<input id="value1" type="text" value="1" />
<input id="value2" type="text" value="2" />
<input id="btnAdd" type="button" value="Add!" onclick="return btnAdd_onclick()" />
Es gibt auch eine serverseitige TextBox:
<asp:TextBox ID="tbServer" runat="server" Text="Server control"></asp:TextBox>
Der letzte ist der JavaScript-Aufruf. Achten Sie auf den integrierten Namespace von PageMethods:
function btnAdd_onclick() {
PageMethods.AddInt(
$('value1').value,
$('value2').value,
OnComplete
);
}
functionOnComplete(result)
{
Warnung(Ergebnis);
}
Führen Sie es im Browser aus, geben Sie zwei Addends ein, geben Sie dann einige Zeichen in die TextBox auf der Serverseite ein, klicken Sie auf Hinzufügen. Sie können sehen, dass auf den Wert der TextBox auf der Serverseite zugegriffen wurde:
Dies ist die von Fiddler abgefangene Netzwerkübertragung. Sie können sehen, dass sowohl ViewState als auch TextBox an den Server zurückgegeben werden:
Der Quellcode dieses Beispielprogramms kann hier heruntergeladen werden: