是否可以从 @Html.PagedListPager(在这里) 中调用 JavaScript 函数?
我有一个按钮,可以调用以下函数并轻松执行所有应该执行的操作:
function fetchResults() {
$.get('@Url.Action("Search", "Notifications")',
{
device: "Device"
},
function (data) {
$('#results').html(data);
})
};
现在,当我单击 PagedListPager 上的页码时,如何执行相同的操作?
目前我的寻呼机重新加载页面,这是我想避免的主要事情。
这是我的寻呼机:
@Html.PagedListPager((IPagedList)ViewBag.NotificationsPage, page =>
Url.Action("Search", "Notifications", new
{
device = "Device",
page = page
}),
PagedListRenderOptions.PageNumbersOnly)
也许有更好的方法来做到这一点。我们将不胜感激。
最佳答案
这个@Html.PagedListPager 帮助器所做的就是吐出一些包含执行分页链接的 HTML。因此,您可以订阅这些链接的点击事件并对它们进行 AJAX 化:
$(document).on('click', 'a', function() {
$.ajax({
url: this.href,
type: 'GET',
cache: false,
success: function(result) {
$('#results').html(result);
}
});
return false;
});
需要注意的重要事项:
- 我以活跃的方式订阅了点击事件。这意味着,如果我们替换 AJAX 请求的成功回调中的链接,此点击事件处理程序将继续工作
- 您可能需要调整
$(document).on('click', 'a', function() {
选择器,该选择器具有很强的包容性,并且仅针对此分页器生成的链接。例如,查看它们是否不在某些包含 div 或其他内容的内部,在这种情况下,您可以使用类似$('.pager').on('click', 'a', function() {
。 - 在
success
回调中,您可能需要调整$('#results')
选择器以定位包含实际结果的 div,该结果将通过部分结果刷新您的 Controller 操作返回的 HTML。 - 谈到部分 HTML 和 Controller 操作,您显然需要调整 AJAX 请求中调用的 Controller 操作,以返回 PartialView,而不是仅包含更新的记录和新分页链接的完整 View 。
关于javascript - 从 PagedListPager 调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21606507/