在asp.net mvc中为我的索引视图添加分页

时间:2011-11-03 08:32:10

标签: jquery asp.net-mvc pagination

我是一个asp.net mvc应用程序。我有一个超过25行的索引视图。这使我的页面渲染速度变慢。我需要在此实现分页。我想将行数限制为6左右。请有人帮帮我吗?

2 个答案:

答案 0 :(得分:0)

对于分页结果,我使用PagedList它易于使用,小巧而干净。 (当然还有很好的文档和样本)。

答案 1 :(得分:0)

型号:

namespace Comtesys.WebUI.Models
{
    public class PagingInfo
    {
        public int TotalItems { get; set; }
        public int ItemsPerPage { get; set; }
        public int CurrentPage { get; set; }
        public int TotalPages
        {
            get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); }
        }
    }
}

的HtmlHelper:

namespace Comtesys.WebUI.HtmlHelpers
{
    public static class PagingHelpers
    {
        public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl)
        {
            StringBuilder result = new StringBuilder();
            for (int i = 1; i <= pagingInfo.TotalPages; i++)
            {
                TagBuilder tag = new TagBuilder("a"); // Construct an <a> tag
                tag.MergeAttribute("href", pageUrl(i));
                tag.InnerHtml = i.ToString();
                if (i == pagingInfo.CurrentPage)
                    tag.AddCssClass("selected");
                result.AppendLine(tag.ToString());
            }
            return MvcHtmlString.Create(result.ToString());
        } 
    }
}

控制器:

public ActionResult List(int page = 1)
 {
    public int PageSize = 6;
            var viewModel = new YourModel
            {
                ListItems = _repository.SomeCollection,
                PagingInfo = new PagingInfo
                {
                    CurrentPage = page,
                    ItemsPerPage = PageSize,
                    TotalItems = _repository.SomeCollection.Count()
                }
            };

            return View(viewModel);
}

使用:

<div class="pager">
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new { page = x }))
</div>