当我到达下一页时,Umbraco 搜索分页不起作用

Umbraco Search Pagination not working when i got to the next page

我已经尝试在搜索结果中进行分页,代码如下

    @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>

第一次搜索时分页看起来像这样

但是当我通过单击分页进入下一页时,出现了错误屏幕 这是 谁能告诉我我错过了什么

我发现代码中有 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);
    }

你的 link 到下一页应该包括查询:

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

请注意,您将首先过滤 @searchQuery 以避免 xss 攻击

我还可以推荐在umbraco 中实现搜索时使用名为ezsearch 的包,它简单且构建良好