Как сохранить поисковый запрос для дополнительных страниц при разбиении на страницы - PullRequest
0 голосов
/ 26 февраля 2010

Я использую метод нумерации страниц для отображения результатов поиска, возвращенных из моей базы данных. Я создаю Html.ActionLink для каждой дополнительной страницы, и мне интересно, как вы помещаете строку, которая была найдена, в ActionLink? Ниже приведена часть моего частичного представления, которым я заполняю div. Он идет после результатов, поэтому пользователь может выбрать другую страницу результатов.

            <% if (Model.HasNextPage)
               {  %>                
                 <% for (var i = 1; i < Model.TotalPages; i++)
                    { %>
                        <%= Html.ActionLink(i.ToString(), "MyPartialPage", "MyController", new { searchString = Cache[searchString], page = i }, new { @id = "SearchResults" })%>
                 <% } %>
            <% } %>

MyController выглядит так:

    public ActionResult SearchResults(string searchString, int? page)
    {
        var theResults = driverRepository.GetResults();

        var searchResults = drivers.Where(q => q.Filename.Contains(searchString));

        var paginatedDrivers = new PaginatedList<Driver>(searchResults, page ?? 0, pageSize);

        return View("SearchResults", paginatedDrivers);   
    }

Есть текстовое поле и кнопка. Пользователь вводит поиск и нажимает кнопку, которая запускает некоторый JavaScript, который получает текст из текстового поля и соответственно публикует сообщения в SearchResults.

Я хочу сохранить то, что они искали, поэтому, когда я создаю свои ActionLinks, параметр поиска все еще присутствует.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2010

Я закончил тем, что добавил в свой класс PaginatedList параметр, содержащий строку поиска, а затем установил строку searchString в actionresult в model.seachString, например:

        <% if (Model.HasNextPage)
           {  %>                
             <% for (var i = 1; i < Model.TotalPages; i++)
                { %>
                    <%= Html.ActionLink(i.ToString(), "MyPartialPage", "MyController", new { searchString = this.Model.SearchString, page = i }, new { @id = "SearchResults" })%>
             <% } %>
        <% } %>

и мой контроллер выглядит как

public ActionResult SearchResults(string searchString, int? page)
{
    var theResults = driverRepository.GetResults();

    var searchResults = drivers.Where(q => q.Filename.Contains(searchString));

    var paginatedDrivers = new PaginatedList<Driver>(searchString, searchResults, page ?? 0, pageSize);

    return View("SearchResults", paginatedDrivers);   
}
0 голосов
/ 26 февраля 2010

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

...