Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET calling non-static webmethod from JS AJAX [duplicate]

Possible Duplicate:
Call non-static method in server side(aspx.cs) from client side use javascript (aspx)

I have this following code that is working fine

function getFooObj() {
    $.ajax({
        type: "POST",
        url: "Dummy.aspx/GetFooObj",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
           alert('good');
        }
    });
}

[WebMethod]
public static FooObj GetFooObj ()
{
    // some code that returns FooObj 
}

my question is if i want my WebMethod NOT to be static, how can i call it from JS?

[WebMethod]
public FooObj GetFooObj ()
{
    // some code that returns FooObj 
}
like image 270
user829174 Avatar asked Jan 24 '13 11:01

user829174


1 Answers

Not possible - PageMethods has to be static.

Reason is quite simple - a instance (non-static) method means it can access page state including controls. However, ASP.NET page/control model needs state information (view-state, event validation etc) for ensuring consistent state of controls. But in case of Page Methods, this is not possible because complete form is not posted back (which is essentially the idea behind PageMethods/ScriptServices - you send/receive only bare minimum information between client/server).

For using instance methods (assuming that you need control access), you should use UpdatePanel way of doing AJAX.

like image 52
VinayC Avatar answered Oct 02 '22 14:10

VinayC