#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, он прост в использовании, маленький и чистый. (и, конечно, есть хорошие документы и образцы).