ASP.NET AJAX callbacks to web service are becoming very popular and unavoidable these days. The feel that the user gets when only a part of the page is updated without even hindering the UI is the advantage that the callbacks offer. The wait for the full page to be posted back and results to appear is reduced thereby keeping a rich user experience. In some situations you would not want to expose the arguments and the methods it supports to the public through the ASMX file. This will require you to move the logic to specific ASPX files or inside the inherited base class. Specifically, this is the most important reason which, I feel, would require you to move web methods to ASPX pages.
Both ASP.NET AJAX Extensions and ASP.NET 3.5 support AJAX callbacks to the web methods placed in ASPX pages or the inherited base class. The following are the steps involved, and we will use a fictitious routine "GetEmployees" to exemplify what we are doing.
The first step is to expose GetEmployees as a web method.
1: public partial class Employees : System.Web.UI.Page
5: public static List<Employees> GetEmployees(string dept)
7: // logic to get the Employee list
Important points to be noted :
1. The method needs to be decorated with [WebMethod]
2. The method needs to be decorated with [ScriptMethod] to enable callback
3. The method MUST be static
1: <asp:ScriptManager ID=”ScriptManager1” runat=”server” EnablePageMethods=”true” />
1: function GetEmployees ()
3: PageMethods. GetEmployees(dept ,OnSucceeded);
6: function OnSucceeded (result)
8: // logic to display the result
Happy coding :)