从 PagedListPager 调用 JavaScript 函数

Dum*_*ani 2 javascript asp.net-mvc jquery pagedlist razor

是否可以从 @Html.PagedListPager( in here ) 中调用 JavaScript 函数?

我有一个按钮,它调用以下功能并轻松执行所有应有的功能:

function fetchResults() {
    $.get('@Url.Action("Search", "Notifications")',
        {
            device: "Device"
        },
        function (data) {
            $('#results').html(data);
        })
};
Run Code Online (Sandbox Code Playgroud)

现在,当我单击 PagedListPager 上的页码时,我该怎么做?

目前我的寻呼机重新加载页面,这是我想避免的主要事情。

这是我的寻呼机:

@Html.PagedListPager((IPagedList)ViewBag.NotificationsPage, page => 
    Url.Action("Search", "Notifications", new
    {
        device = "Device",
        page = page
    }),
    PagedListRenderOptions.PageNumbersOnly)
Run Code Online (Sandbox Code Playgroud)

也许有更好的方法来做到这一点。帮助将不胜感激。

Dar*_*rov 5

这个@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;
});
Run Code Online (Sandbox Code Playgroud)

需要注意的重要事项:

  • 我已经以活泼的方式订阅了点击事件。这意味着如果我们替换 AJAX 请求的成功回调中的链接,这个点击事件处理程序将继续工作
  • 您可能想要调整$(document).on('click', 'a', function() {非常具有包容性的选择器,并且仅针对此寻呼机生成的链接。例如,看看它们是否不在某些包含 div 的东西内,在这种情况下,您可以使用$('.pager').on('click', 'a', function() {.
  • success回调中,您可能需要调整$('#results')选择器以定位包含实际结果的 div,该 div 将使用控制器操作返回的部分 HTML 进行刷新。
  • 谈到部分 HTML 和控制器操作,您显然需要调整在 AJAX 请求中调用的控制器操作,以返回 PartialView 而不是仅包含更新记录和新分页链接的完整视图。