0

最近、私は混乱した問題に遭遇しました。

次のリンクに従って遅延読み込みを行いたい: ASP.NET MVC Infinite Scrolling Jquery

プロジェクトを実行し、実装された機能を使用したとき。すべてが正常に機能していますが、jquery は機能していません。それは私のデータを2回追加します画像を参照してください: 数値である最初のフィールドに注意してください

すべて問題ありません (firebug は正しいデータを示しています)。

私のjqueryコードは次のとおりです。

var page = 1;
var scrollHandler = function () {
    if (($(window).scrollTop() == $(document).height() - $(window).height()))
        loadMoreToInfiniteScrollTable();

}

function loadMoreToInfiniteScrollTable() {
    page++;
    $.ajax({
        type: 'GET',
        url: dataUrl,
        data: "p=" + page,
        success: function (data) {
            if (data) {
                $('tbody').append( data );
                
        }
        }
    });
    
}

呼び出し方法

    <script type="text/javascript">
        var dataUrl = '@Url.RouteUrl("UserInfo")';
        $(window).scroll(scrollHandler);
    </script>

コントローラー アクション メソッド : 一度ビューを作成する

    public List<inf> lst;
    public ActionResult ExpressionDetail()
    {
        var data = lst.Where(f=>f.id>0&&f.id<lenght).OrderBy(i=>i.id);

        return View(data);
    }

ページ区切りの部分ビュー:

    [HttpGet]
    public ActionResult _TableData(int? p=0)
    {
        int firstfrom = p ?? 1;
        int endfrom = (firstfrom > 1 ? (firstfrom - 1) * lenght : 0);

        var g= lst.OrderBy(i=>i.id).Skip(endfrom-1).Take(lenght).AsEnumerable();

        return PartialView(g);
    }

ルート構成:

routes.MapRoute("UserInfo", "",new {Controller= "Default", Action= "_TableData" });

一定の長さ:

public const int lenght = 15;

部分ビュー:

@model IEnumerable<testable.Models.inf>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.id)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.name)
    </td>

</tr>

}

およびメイン ビュー:

@model IEnumerable<testable.Models.inf>
<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>ExpressionDetail</title>
</head>
<body>

<table class="table">
    <tr>
        <th>
            Id
        </th>
        <th>
            name
        </th>
    </tr>
@Html.Partial("_TableData", Model)
    <tbody>

    </tbody>

</table>

</body>
</html>

inf モデル

public class inf
{
    public int id { get; set; }
    public string name { get; set; }
}
4

1 に答える 1