How to call an ASP.NET WebMethod in a UserControl (.ascx)
ascx, asp.net, c#, jquery, webmethod
Solution
WebMethod should be static. So, You can put it in the user control and add a method in the page to call it.
Edit:
You can not call a web method through a user control because it'll be automatically rendered inside the page.
The web method which you have in the user control:
public static string HelloWorld()
{
return "helloWOrld";
}
In the Page class add the web method:
[WebMethod]
public static string HelloWorld()
{
return ArticleList.HelloWorld(); // call the method which
// exists in the user control
}
Problem
Is it possible to place a WebMethod in an ascx.cs file (for a UserControl) and then call it from client-side jQuery code? For some reasons I can't place the WebMethod code in an .asmx or .aspx file. Example: In ArticleList.ascx.cs I have the following code: ``` [WebMethod] public static string HelloWorld() { return "helloWorld"; } ``` In ArticleList.ascx file there I have the call to the WebMethod as follows: ``` $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", data: "{}", dataFilter: function(data)//makes it work with 2.0 or 3.5 .net { var msg; if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') msg = JSON.parse(data); else msg = eval('(' + data + ')'); if (msg.hasOwnProperty('d')) return msg.d; else return msg; }, url: "ArticleList.ascx/HelloWorld", success: function(msg) { alert(msg); } }); ``` and the error from firebug is: ``` <html> <head> <title>This type of page is not served.</title> ``` How can I sucessfully call the server-side WebMethod from my client-side jQuery code?