8

重複の可能性:
クライアント側からサーバー側 (aspx.cs) の非静的メソッドを呼び出すには、javascript (aspx) を使用します。

私は正常に動作している次のコードを持っています

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 
}

私の質問は、WebMethod を静的にしたくない場合、どうすれば JS から呼び出すことができますか?

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

3 に答える 3

11

不可能 - PageMethods は静的でなければなりません。

理由は非常に単純です。インスタンス (非静的) メソッドは、コントロールを含むページの状態にアクセスできることを意味します。ただし、ASP.NET ページ/コントロール モデルでは、コントロールの一貫した状態を確保するために、状態情報 (ビューステート、イベント検証など) が必要です。しかし、ページ メソッドの場合、完全なフォームが返されないため、これは不可能です (これは基本的に PageMethods/ScriptServices の背後にある考え方です。クライアント/サーバー間で最小限の情報のみを送受信します)。

インスタンス メソッドを使用するには (制御アクセスが必要であると仮定して)、AJAX を実行する UpdatePanel の方法を使用する必要があります。

于 2013-01-24T12:19:02.213 に答える
3

静的メソッドのみをサポートする理由は、ページがインスタンス化されていないためです。静的でないWebメソッドを使用する場合は、Webサービス(.asmx)にアクセスしてください。

于 2013-01-24T12:39:39.777 に答える
0

シンプルな Web サービスを実装してみませんか? ここから本当に良い例を見つけることができます

于 2013-01-24T12:31:38.097 に答える