1

ASP.Netページで、jQueryAJAXを使用してスクロールしながらサーバーからデータを読み込んでいます。AJAXを使用してサーバーからデータをロードすると、画面に表示されるデータのみが最初にロードされ、必要に応じてサーバーからより多くのデータがロードされるため、アプリケーションのパフォーマンスが向上するため、この方法を使用しています。ユーザーがスクロールします。私は次のコードを使用しています:

$(document).ready(

        function () {
            $contentLoadTriggered = false;
            $(window).scroll(

            function () {
                if ($(window).scrollTop() >= ($("#wrapperDiv").height() - $(window).height()) && $contentLoadTriggered == false) { //here I want to check for the isReady variable in ViewState
                    $contentLoadTriggered = true;
                    $.ajax({
                        type: "POST",
                        url: "MyPage.aspx/GetDataFromServer",
                        data: "{}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        async: true,
                        cache: false,
                        success: function (msg) {
                            $("#wrapperDiv").append(msg.d);
                            $contentLoadTriggered = false;
                        },
                        error: function (x, e) {
                            alert("The call to the server side failed. " + x.responseText);
                        }
                    });
                }
            });
        });

[WebMethod]
public static string GetDataFromServer()
{
    string resp = string.Empty;
    for (int i = 1; i <= 10; i++)
    {
        resp += "<p><span>" + i + "</span> This content is dynamically appended to the existing content on scrolling.</p>";
    }

    //if (myConidition)
        //ViewState["isReady"] = true;

    return resp;
}

ある時点(私の条件が満たされたとき)で、サーバーからのデータのロードを停止したいと思います。そこで、にブール変数isReadyを設定してViewStateから、jQueryでこの変数の値をチェックして、WebMethodを呼び出すかどうかを判断することを考えました。残念ながら、WebServicesでViewStateを使用することはできません。また、jQueryでViewStateにアクセスする方法もわかりません。

WebMethodとjQueryの両方からアクセスできるViewStateの代わりに何を使用できますか?

4

1 に答える 1

1

私が考えることができる最善の方法は、カスタムクラスオブジェクトまたは文字列[]を送信することです。

Public class CustomClass
{
    public string HTML { get; set; }
    public bool Load  { get; set; }
}

[WebMethod()]
public static StatusViewModel  GetDataFromServer()
{
    // do work
    return CustomObject;
}

それが役に立てば幸い。

于 2012-04-26T08:21:27.803 に答える