2012-05-11 7 views
2

私は現在、PagedListライブラリ(https://github.com/TroyGoode/PagedList)を使用してMVC 3プロジェクトで作業しています。AJAX Inseadを使用するには、ページング機能をどのように変換できますか?

このコードを変換して、ページ全体をリフレッシュするのではなく、新しい結果でajaxを使用してページを更新したいとします。私はそれについてどうやって行くのか本当に分かりません。 WebフォームからのMVCにはまったく新しいものです。どんな助けでも大歓迎です!

HERESに私のコード:

ホームコントローラ:

//##################################### 
// 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"); 
    } 
} 

PartialView:_Comments

@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 = "&Uacute;ltima >>" }) 

モデル

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; } 
    } 
} 
+0

私はAjax.Beginformを使用する必要があるように見える? – Maddhacker24

答えて

9

は私がPagedList nugetパッケージの作成者です。

プロジェクトのGitのレポでAjaxのページネーション(だけでなく、無限スクロール)を行うための例があります:

https://github.com/TroyGoode/PagedList/tree/master/src/PagedList.Mvc4.Example

コントローラー: https://github.com/TroyGoode/PagedList/blob/master/src/PagedList.Mvc4.Example/Controllers/AjaxController.cs

ビュー: https://github.com/TroyGoode/PagedList/blob/master/src/PagedList.Mvc4.Example/Views/Ajax/Index.cshtml

+1

ありがとう、トロイ! – Maddhacker24

+4

リンクが動いたようです。コントローラーはここにあります(https://github.com/TroyGoode/PagedList/blob/master/src/PagedList.Mvc4.Example/Controllers/AjaxController.cs)、ビューはここにあります(https:///github.com/TroyGoode/PagedList/blob/master/src/PagedList.Mvc4.Example/Views/Ajax/Index.cshtml)。 – Splendor

+0

トロイ - MVC3であなたのアジャクションが動作しますか? – BattlFrog

1

あなたノックアウトとpagedlistパッケージでそれを行う簡単にでき

<script type="text/javascript"> 
$(function() { 
    $('#users').pagify({ 
     dataUrl: '/User/UserLisr', 
     callBack: function(){ 
      // Ajax remove preloader and some other callbacks 
     }, 
     beforeSend: function(){ 
      // Ajax show preloader and some other function before start 
     } 
    }); 
} 
</script> 

pagify.mvc package

+0

廃止、申し訳ありません。 – Lucas

0

私はトロイの例えば申し訳ないので面倒ですし、簡単なHTMLのないベースがhelper.I質問者の受け入れ答え以下採用することができ、それはうまくいく: Using paging in partial view, asp.net mvc

関連する問題