Как я делаю разбиение на страницы в ASP.NET MVC?

Вы можете использовать xsd, как предложено Дарином.

В дополнение к этому рекомендуется отредактировать файл test.xsd для создания более разумной схемы.

type="xs:string" можно изменить на type="xs:int" для целочисленных значений minOccurs="0" можно изменить на minOccurs="1", где требуется поле maxOccurs="unbounded", можно изменить на maxOccurs="1", где разрешен только один элемент

Вы могут создавать более продвинутые xsd-s, если вы хотите еще раз подтвердить свои данные, но это, по крайней мере, даст вам разумные типы данных в сгенерированном c #.

81
задан Spoike 15 January 2009 в 10:16
поделиться

2 ответа

Ну, каков источник данных? Ваше действие могло взять, некоторые приняли значение по умолчанию, аргументы, т.е.

ActionResult Search(string query, int startIndex, int pageSize) {...}

приняли значение по умолчанию в установке маршрутов так, чтобы startIndex был 0, и размер страницы (говорят) 20:

        routes.MapRoute("Search", "Search/{query}/{startIndex}",
                        new
                        {
                            controller = "Home", action = "Search",
                            startIndex = 0, pageSize = 20
                        });

Для разделения канала можно использовать LINQ довольно легко:

var page = source.Skip(startIndex).Take(pageSize);

(или делают умножение при использовании "pageNumber", а не "startIndex")

С LINQ-toSQL, EF, и т.д. - это должно "сочинить" вниз к базе данных, также.

необходимо тогда быть в состоянии использовать ссылки действия на следующую страницу (и т.д.):

<%=Html.ActionLink("next page", "Search", new {
                query, startIndex = startIndex + pageSize, pageSize }) %>
100
ответ дан Marc Gravell 5 November 2019 в 17:23
поделиться

Я имел ту же проблему и нашел очень изящное решение для Класса Пейджера от

http://blogs.taiga.nl/martijn/2008/08/27/paging-with-aspnet-mvc/

В Вашем контроллере, на который похож вызов:

return View(partnerList.ToPagedList(currentPageIndex, pageSize));

и в Вашем представлении:

<div class="pager">
    Seite: <%= Html.Pager(ViewData.Model.PageSize, 
                          ViewData.Model.PageNumber,
                          ViewData.Model.TotalItemCount)%>
</div>
15
ответ дан casperOne 5 November 2019 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: