【发布时间】:2018-01-06 16:04:44
【问题描述】:
我有一个局部视图,我在其中加载了一个分页器进行分页。
分页功能有效,因为链接更改如下:http://localhost:1048/Trip -> http://localhost:1048/Trip?page=2 但似乎我加载“下一页”的“请求”没有按预期工作。
局部视图
//Here is a table view that
//that requires pagination.
@{
var prevDisabled = !Model.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.HasNextPage ? "disabled" : "";
}
<ul class="pager">
<li>
<a asp-action="Index"
asp-route-page="@(Model.PageIndex - 1)"
class="btn btn-default @prevDisabled btn">
Previous
</a>
</li>
<li>
<a asp-action="Index"
asp-route-page="@(Model.PageIndex + 1)"
class="btn btn-default @nextDisabled btn">
Next
</a>
</li>
</ul>
我认为我的链接是错误的(asp-action="Index"),但我不知道还有什么可以让它“导航到”的(我尝试将它更改为我的控制器功能 - 但结果非常不需要),因为我对.Net还是很陌生。我也知道我的控制器函数中有一个错误,我总是加载第 1 页。如何检查页面是否输入到函数中? (类似于if (page == null) { page = 1 })加载我的部分视图的函数如下:
控制器功能
[HttpGet]
public async Task<IActionResult> TripTable(int? page)
{
var trips = from t in _tripcontext.Tripmetadata select t;
page = 1;
int pageSize = 20;
return PartialView("PartialTripsView", await PaginatedList<Tripmetadata>.CreateAsync(trips.AsNoTracking().OrderBy(t => t.Tripid), page ?? 1, pageSize));
}
更新
我想我忘了提到,每当我使用 Next 按钮时,它只会刷新整个索引页面(其中没有部分视图)。单击索引页面上的按钮时会加载部分视图,因此当页面刷新时,部分视图不再存在。
【问题讨论】:
-
如果您正在执行重定向,则需要重新呈现整个页面,除非涉及 javascrip,否则您无法返回部分视图。您的操作需要具有名称 Index 并在主页内呈现部分视图。
-
那么我需要创建一个新的“索引”函数吗?
-
你应该已经在控制器中有一个索引操作,只需添加一个可选参数
int page = 1这意味着如果你不发送它将显示第一页。 -
我明白了。请看我上面的更新。我会尝试将参数添加到我的索引函数中。
-
我的猜测是您使用this 教程作为起点。如您所见,控制器有一个动作索引,它只是在响应中返回页面。如果您只想渲染网格部分,则需要使用 ajax。 asp-index 只是创建一个指向不同页面的超链接。
标签: javascript c# jquery pagination asp.net-core-mvc