Umbraco Search Pagination не работает, когда я попал на следующую страницу - PullRequest
0 голосов
/ 02 октября 2018

Я пытался выполнить пагинацию в результатах поиска. Код указан ниже

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
 <form action="/movesearchresult/" method="GET">
        <input type="text" class="searchfield" placeholder="" name="query">
        <button class="searchbtn btn btn-default btn-sm">Search</button>
    </form>

     @{
        var searchQuery = Request.QueryString["query"];

    } 

       @{
        //number of results
        var searchResults = Umbraco.Search(searchQuery);
        var resultsCount = Umbraco.Search(searchQuery).Count();

        //required results per page
        var pageSize = 5;

        //retrieve current page from query string
        int currentPage = 1;
        if (!String.IsNullOrEmpty(Request.QueryString["query"]))
        {
            int.TryParse(Request.QueryString["query"], out currentPage);
        }

        //number of pages
        int pageCount = 1;
        if (resultsCount > pageSize)
        {
            pageCount = (int)Math.Ceiling((double)resultsCount / pageSize);
        }


    }

    <div>
        Page @currentPage of @pageCount pages
    </div>
    <div class="searchresults move-repo">
    <ul>
        @*Iterate through the search results skipping the results showing on any previous pages, and taking enough results to fill the page*@
        @foreach (var result in searchResults.Skip((currentPage - 1) * pageSize).Take(pageSize))
        {
            <li>
                <a href="@result.Url">@result.Name</a>
            </li>
        }
    </ul>
    </div>

    <ul>
    @for (int i = 1; i <= pageCount; i++)
    {
        <li>
            <a href="/movesearchresult?page=@i">Page @i</a>
        </li>
    }
    </ul>

при первом поиске нумерация страниц выглядит следующим образом enter image description here.

, нокогда я добрался до следующей страницы, щелкнув по нумерации страниц, у меня появилось сообщение об ошибке: enter image description here. Может ли кто-нибудь сообщить мне, чего мне не хватает

1 Ответ

0 голосов
/ 02 октября 2018

Я вижу 2 проблемы в коде:

Следующее:

    if (!String.IsNullOrEmpty(Request.QueryString["query"]))
    {
        int.TryParse(Request.QueryString["query"], out currentPage);
    }

Должно быть

    if (!String.IsNullOrEmpty(Request.QueryString["page"]))
    {
        int.TryParse(Request.QueryString["page"], out currentPage);
    }

И ваша ссылка на следующую страницу должна включатьquery:

@for (int i = 1; i <= pageCount; i++)
{
    <li>
        <a href="/movesearchresult?page=@i&query=@searchQuery">Page @i</a>
    </li>
}

Имейте в виду, что вы сначала отфильтруете @searchQuery, чтобы избежать xss-атак

Также я могу рекомендовать использовать пакет с именем ezsearch при реализации поискав umbraco это просто и хорошо построено

...