如何在asp.net mvc3中进行分页?

时间:2011-09-22 10:27:27

标签: asp.net-mvc asp.net-mvc-3 jquery paging

我正在使用asp.net mvc3应用程序并且有许多来自数据库的记录。我想先显示10条记录然后用户可以点击按钮查看接下来的10条记录等等...就像facebook墙发布更多记录一样。

如何使用jQuery和ajax在我的应用程序中实现这个功能?

如何使用分页控制视图中的显示数据?

我使用它来获取10条记录,但我想使用更多记录按钮显示所有记录

var Entity = (from a
    in context.Data
    where <Condition>
    select a).Take(10);

4 个答案:

答案 0 :(得分:1)

以下文章应该给你一个想法:

http://weblogs.asp.net/andrewrea/archive/2008/07/01/asp-net-mvc-quot-pager-quot-html-helper.aspx

http://weblogs.asp.net/gunnarpeipman/archive/2010/02/21/simple-pager-for-asp-net-mvc.aspx

另一方面,您可以像这样实现它:

获取名为TugberkUg.MVC的nuget包

然后,您的控制器应如下所示:

    public ActionResult Index(int page = 0) {

        const int pageSize = 10;

        #region _filter the model

        IQueryable<myModel> model = _myrepo.GetAll()

        #endregion

        #region _convert the model to paginatedList

        var paginatedModel = 
            new TugberkUg.MVC.Helpers.PaginatedList<myModel>(model, page, pageSize);

        #endregion

        return View(paginatedModel);
    }

而且,这里的控制器应该是这样的:

@model TugberkUg.MVC.Helpers.PaginatedList<myModel>

@foreach(var item in Model) { 

     <p>@item.id</p>

}

您还需要处理寻呼机,这里有一个示例:

ASP.NET MVC PaginatedList Pager - Put wise "..." after certain point

TugberkUg.MVC.Helpers.PaginatedList课程将为寻呼机提供所有必要的字段。

答案 1 :(得分:0)

我不知道任何.net库会为你开箱即用,所以我会推出一个DIY解决方案供你思考。

  

如何使用jquery和ajax在我的应用程序中实现此功能?

为ajax请求设置一个特定的控制器可能是明智之举。只需要一个单独的区域(Ajax),并将您的ajax请求发送到您设置的URL。

  

如何使用分页控制视图中的显示数据?

设置一个接收“page”参数的控制器。

public ActionResult GetData(int?page){     //页面可以为空,以允许默认页面

// Do your query here to get the specific page.

}

我不确定您是否需要除此之外的更多信息。如果我试图做你正在做的事情,这就是我要做的。希望有所帮助。

答案 2 :(得分:0)

如果您使用Webgrid显示数据,那么rowsperpage就可以了。

 var grid = new WebGrid(source: Model, selectionFieldName: "SelectedRow", rowsPerPage: 10, canPage: true, canSort: true);

答案 3 :(得分:0)

我建议使用telerik mvc控件。它们非常易于使用,功能强大且免费。

www.telerik.com