Como posso converter minha funcionalidade de paginação para usar o AJAX Insead?
Eu atualmente tenho paginação trabalhando no meu projeto MVC 3 usando a biblioteca PagedList (https://github.com/TroyGoode/PagedList).
Eu gostaria de converter este código para atualizar a página usando ajax com os novos resultados, em vez de atualizar a página inteira. Eu não tenho certeza de como fazer isso. Im bastante novo para MVC vindo de Webforms. Qualquer ajuda seria muito apreciada!
Aqui está meu código:
Controlador Doméstico:
<code>//##################################### // ActionResult = Retrieve Comments //##################################### [ChildActionOnly] public ActionResult _Comments(int ProductID, int? Page) { //Perform the Database Query. try { //SQL Query - Get * records var Model = from r in DB.Comments where r.ProductID == ProductID select r; //Page number passed in via url. Default to 1 if not specified. var PageNumber = Page ?? 1; //Grab 6 results from the result set. var Results = Model.ToPagedList(PageNumber, 6); //Store Paged Result set in ViewBag for Paging. ViewBag.Results = Results; //Store in ViewBag for display (Page 1 of 43) ViewBag.PageNumber = PageNumber; //Get Total Pages: Divide Total Records by 6 Records per page. ViewBag.PageCount = Model.Count() / 6 + 1; //Return Records to my view. return PartialView(Results); } //There was an error. catch { //ViewBag.ErrorMessage = ex; return PartialView("Error"); } } </code>
PartialView: _Comentários
<code>@model IEnumerable<DH.Models.Comment> @using PagedList.Mvc; @using PagedList; @{ //No Comments Yet if (@Model.Count() == 0) { <div id="CommentStatus">Be the first to comment on this product!</div> } //There are comments! else { foreach (var item in Model) { //html for writing out the comments... } } } <div>Page @ViewBag.PageNumber of @ViewBag.PageCount</div> @Html.PagedListPager((IPagedList)ViewBag.Results, Page => Url.Action("Index", new { Page = Page }), new PagedListRenderOptions { LinkToPreviousPageFormat = "< Prev", LinkToNextPageFormat = "Next >", LinkToLastPageFormat = "Última >>" }) </code>
Modelo
<code>namespace DH.Models { public class Comment { public int CommentID { get; set; } public int ProductID { get; set; } public string Author { get; set; } public string Message { get; set; } public DateTime MessageDate { get; set; } public int ThumbsUp { get; set; } public int ThumbsDown { get; set; } public string IP { get; set; } } } </code>