使用ajax动态返回可变数量的模型

时间:2018-05-09 18:40:58

标签: javascript jquery .net asp.net-mvc

我目前有如下所示的代码,我将数据从控制器传递到我的视图,然后显示数据。

使用ajax我想使我的视图适应通过控制器传递的数据更加动态。

目标:

此时,视图会返回用户关注的人员名单。我想要一个设定变量,例如maxShow = 5,加载页面时最多显示5个人。当用户滚动到页面底部时,ajax将获取并将下一个5放到dom上,这应该是一个连续循环。

我已经用jquery提出了一些粗略的伪代码,如下所示,如何动态加载每个人,但是无法弄清楚如何将调用限制为5个人,然后是另外5个人等等滚动到最底部时。我唯一的半解决方案是在最后将我的以下查询更改为.take(5)。

$(window).scroll(function() {
   if($(window).scrollTop() + $(window).height() == $(document).height()) {
       // Make an Ajax call 
     $.get("/Following",function(data){
      $("#div").html(data);
      });
     }
        [Authorize]
        public ActionResult Following()
        {
            var userId = User.Identity.GetUserId();

            var following = _context.Followings
                            .Where(x => x.FollowerId == userId)
                            .Select(a => a.Followee)
                            .ToList();

            var viewModel = new FollowingViewModel
            {
                Following = following,
                ShowActions = User.Identity.IsAuthenticated,
                Heading = "People I'm following"
            };

            return View("following", viewModel);
        }

查看

@model Gighub3.ViewModels.FollowingViewModel

@{
    ViewBag.Title = "Following";
}

<h1>@Model.Heading</h1>

<ul>
    @foreach (var following in Model.Following)
    {
        <li>@following.Name</li>
    }
</ul>

1 个答案:

答案 0 :(得分:0)

听起来我需要实现某种分页_context.Followings需要对其进行排序,然后添加limit(一次采取的结果数量,例如5)和start(您当前所在的页面即{该人向下滚动多少次以触发对ajax请求的更多关注者参数的请求。然后你可以做类似的事情:

_context.Followings.OrderBy(*/something in here*/).Skip((start - 1) * limit).Take(limit)