I cannot figure out how to get a partial view for displaying a paged list using ajax.
The closest I worked with is an example from Using paging in a partial view, asp.net mvc
I'm basically trying to create a page with a list of comments for the user, where the page can be changed in the same way as the response tab on the stackoverflow users page.
Paging works great on the first click of a pager, but then a partial view is all that comes back when I click on the pager again.
Controller:
public class ProductController : Controller { public IQueryable<Product> products = new List<Product> { new Product{ProductId = 1, Name = "p1"}, new Product{ProductId = 2, Name = "p2"}, new Product{ProductId = 3, Name = "p3"}, new Product{ProductId = 4, Name = "p4"}, new Product{ProductId = 5, Name = "p5"} }.AsQueryable(); public object Index() { return View(); } public object Products(int? page) { var pageNumber = page ?? 1;
Views:
Index.cshtml:
<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" /> <h2>List of Products</h2> <div id="products"> @Html.Action("Products", "Product") </div> @section scripts{ <script type="text/javascript"> $(function() { $('#myPager').on('click', 'a', function() { $.ajax({ url: this.href, type: 'GET', cache: false, success: function(result) { $('#products').html(result); } }); return false; }); }); </script> }
_Products.cshtml:
@using PagedList.Mvc; @using PagedList; <ul> @foreach(var product in ViewBag.OnePageOfProducts){ <li>@product.Name</li> } </ul> <div id="myPager"> @Html.PagedListPager((IPagedList)ViewBag.OnePageOfProducts, page => Url.Action("Products", new { page })) </div>
Model
public class Product { public int ProductId { get; set; } public string Name { get; set; } }
Can someone show me what I'm doing wrong?
ajax asp.net-mvc pagedlist
woggles
source share