Добавление нумерации страниц в мой индексный указатель в asp.net mvc - PullRequest
0 голосов
/ 03 ноября 2011

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

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

Модель:

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>
0 голосов
/ 03 ноября 2011

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

...