Using paging in partial view, asp.net mvc

asp.net-mvc, asp.net-mvc-partialview, c#, pagedlist

Solution

You cannot use Ajax.ActionLink but you could AJAXify the links. Put the pager in a `<div>`:

<div id="myPager">
    @Html.PagedListPager(
        Model, 
        page => Url.Action(
            "Index", 
            new { 
                humanID = ViewBag.HumanID, 
                page = page 
            }
        ),
        new PagedListRenderOptions
        {
            LinkToFirstPageFormat = "<<",
            LinkToPreviousPageFormat = "prev",
            LinkToNextPageFormat = "next",
            LinkToLastPageFormat = ">>",
        }
    )
</div>

and then AJAXify the links:

$(function() {
    $('#myPager').on('click', 'a', function() {
        $.ajax({
            url: this.href,
            type: 'GET',
            cache: false,
            success: function(result) {
                $('#some_grid_container').html(result);
            }
        });
        return false;
    });
});

Notice that in the `success` callback I've used `$('#some_grid_container')` which should be some wrapping div around your entire table.

Problem

I'd greatly appreciate if someone could advise on following: In my view I display the list of items: ``` @model PagedList.IPagedList<Items> @using PagedList.Mvc; @foreach (var item in Model) {//displaying data} ``` my pager looks like this: ``` @Html.PagedListPager(Model, page => Url.Action("Index", new { humanID = ViewBag.HumanID, page = page }), new PagedListRenderOptions { LinkToFirstPageFormat = "<<", LinkToPreviousPageFormat = "prev", LinkToNextPageFormat = "next", LinkToLastPageFormat = ">>", }) ``` The problem is that when I click on the next page it is returned blank, without my `_Layout`. I wouldn't like to reload _Layout all the time. Is there a way to use Ajax.ActionLink for pager? So that I could `UpdateTargedId` inside my partial view?

Original source

Related problems