我正在尝试将无限滚动的分页添加到我的Web应用程序中。我只有一个问题,就是我需要将一个值传递给控制器动作方法以获取序列中的下一页。
动作如下:
public ActionResult Index(string nextCursorMark)
{
if (Request.IsAjaxRequest())
{
var page = GetPagedArticles(15, "*:*", nextCursorMark);
return PartialView("_ArticlesPartial", page);
}
else
{
var page = GetPagedArticles(30, "*:*");
return View(page);
}
}
page
包含我需要传递的字符串。呈现视图时,通过javascript从该视图添加值,这意味着下一个请求(部分)当然是正确获取的。问题是所有后续请求都返回相同的值,因为我无法弄清楚如何传递值(使用MVC或javascript)。
脚本添加到View中(大部分代码省略):
@section scripts {
<script type="text/javascript">
$(window).scroll(function () {
if ($(window).scrollTop() == $(document).height() - $(window).height() && !hasData && !inProgress) {
$.ajax("@Url.Action("Index", "Articles", new { nextCursorMark = Model.CurserMark })", {
...
}});
</script>
}
答案 0 :(得分:1)
在将Razor发送到视图之前,会在服务器上解析Razor
$.ajax("@Url.Action("Index", "Articles", new { nextCursorMark = Model.CurserMark })"
正在评估'/Articles/Index/#
的网址,其中#是第一次加载页面时{是CursorMark
的初始值。
您需要包含一个可以随每次调用递增的变量
var cursor = '@Model.CursorMark'; // initial value
....
$.ajax('@Url.Action("Index", "Articles")', { newCursorMark: cursor } {
// update the DOM
....
cursor += someIncrement; // increment the value for the next call
}});