Добавление разбивки на страницы в мой индексный вид в asp.net mvc

#jquery #asp.net-mvc #pagination

#jquery #asp.net-mvc #разбивка на страницы

Вопрос:

Мой asp.net приложение mvc. У меня есть представление индекса со строками более 25. Это замедляет рендеринг моей страницы. Мне нужно реализовать разбивку на страницы в этом. Я хочу ограничить количество строк до 6 или около того. Пожалуйста, кто-нибудь может мне помочь в этом?

Ответ №1:

Модель:

 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>
  

Комментарии:

1. каким должен быть контроллер?

Ответ №2:

Для разбивки результатов на страницы я использую PagedList, он прост в использовании, маленький и чистый. (и, конечно, есть хорошие документы и образцы).