0

「曲」のリストを含むビューモデルがあります。今、ビューがすべてのリストをウォークスルーすることを望まないので、Java スクリプトで次のようにしました。

$(window).scroll(function () {
    if ($(window).scrollTop() + $(window).height() + 5 > $(document).height()) {    
        @foreach (var item in Model.Songs.Skip(Number).Take(20))
        {
             //do something
        }
        Number = Number + 20;
    }
});

問題は、Razor 変数 'Number' が変更されていないため、常に同じエントリをロードすることです。スクローラーが一番下に到達するたびに ajax 呼び出しを行いたくありません。ページのモデルが既にあります。すべてをすぐに操作したくありません。

4

1 に答える 1

0

これを達成するための最良の方法は、モデルコレクションを解析してjavascriptオブジェクト(配列)にすることだと思います

最初に、次のようなhtmlヘルパーメソッドを作成する必要があります(とにかく別の状況で役立ちます)

  using Newtonsoft.Json;
   .....
     public static HtmlString ToJson(this HtmlHelper helper, object obj)
     {
         return MvcHtmlString.Create(JsonConvert.SerializeObject(obj));
     }

次に、モデル プロパティを js オブジェクトに変換します。

<script>
    var songs = @Html.ToJson(Model.Songs.Skip(Number).Take(20))
</script>

それで全部です。私のために働きます。

于 2013-08-04T17:10:40.777 に答える