Javascript 使用ajax动态返回数量可变的模型
我目前有如下代码,我将数据从控制器传递到视图,然后显示数据 使用ajax,我想调整我的视图,使其在通过控制器传递数据时更具动态性 目标: 此时,视图返回用户跟踪的人员的姓名列表。我想有一个设置变量,例如maxShow=5,当页面加载时,最多会显示5个人。当用户滚动到页面底部时,ajax将获取并将下一个5放到dom中,这应该是一个连续的循环 我用jquery编写了一些粗略的伪代码,如下所示,用于动态加载每个人,但无法确定如何将调用限制为5人,然后滚动到最底部时再调用5人,以此类推。我唯一的一半解决方案是将下面的查询改为。在结尾处取(5)Javascript 使用ajax动态返回数量可变的模型,javascript,jquery,.net,asp.net-mvc,Javascript,Jquery,.net,Asp.net Mvc,我目前有如下代码,我将数据从控制器传递到视图,然后显示数据 使用ajax,我想调整我的视图,使其在通过控制器传递数据时更具动态性 目标: 此时,视图返回用户跟踪的人员的姓名列表。我想有一个设置变量,例如maxShow=5,当页面加载时,最多会显示5个人。当用户滚动到页面底部时,ajax将获取并将下一个5放到dom中,这应该是一个连续的循环 我用jquery编写了一些粗略的伪代码,如下所示,用于动态加载每个人,但无法确定如何将调用限制为5人,然后滚动到最底部时再调用5人,以此类推。我唯一的一半解决
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()) {
// Make an Ajax call
$.get("/Following",function(data){
$("#div").html(data);
});
}
看法
@model Gighub3.ViewModels.FollowingViewModel
@{
ViewBag.Title=“以下”;
}
@模型标题
@foreach(模型中的var following.following)
{
- @下面是我的名字
}
我觉得您需要实现某种分页<代码>\u上下文。以下需要应用排序依据,然后将限制
(一次要获取的结果数,例如5)和开始
(您当前所在的页面,即此人向下滚动多少次以触发更多关注者的请求)参数添加到ajax请求中。然后,您可以执行以下操作:
_context.Followings.OrderBy(*/something in here*/).Skip((start - 1) * limit).Take(limit)
您需要为“counter”设置一个全局javascript变量,在每次进行ajax调用时递增该变量,并将其传递给控制器方法,以便使用
.Skip().Take()
在您的查询中,对于某些外部/业务因素,您无法将参数传递给Skip and Take方法的特定场景,您将如何处理您如何找到更新Skip的方法@StephenMueckei如果浏览器不向服务器发送值,则服务器无法知道您接下来需要哪组记录。不清楚为什么不能将方法更改为public ActionResult Following(int page)
忽略我问题中的代码,ActionResult本身不执行查询,而是在ActionResult中调用一个方法getData(),getData()返回任务模型(我想要的数据),该模型被传递给ActionResult。然而,我的ajax是针对ActionResult的,出于业务需求的原因,我无法在task getData()中传递参数,也无法考虑在ActionResult中使用参数,因为查询是在getData()中完成的。抱歉,如果解释得很糟糕@StephenMueckeYou将一个值传递给ActionResult方法(比如传递给int page
参数),然后使用var data=getData()过滤结果。跳过(第*x页)。取(x)
wherex
是您想要的记录数(尽管如此,它不会有效,因为您的getData()
方法每次都会返回所有记录,而不是查询数据库并只返回您想要的x
记录
@model Gighub3.ViewModels.FollowingViewModel
@{
ViewBag.Title = "Following";
}
<h1>@Model.Heading</h1>
<ul>
@foreach (var following in Model.Following)
{
<li>@following.Name</li>
}
</ul>
_context.Followings.OrderBy(*/something in here*/).Skip((start - 1) * limit).Take(limit)