代码之家  ›  专栏  ›  技术社区  ›  Gayathri Mohan

当我进入下一页时,Umbraco搜索分页不起作用

  •  -1
  • Gayathri Mohan  · 技术社区  · 7 年前

    我在搜索结果中尝试了分页,代码如下

        @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 回复  |  直到 7 年前
        1
  •  1
  •   Mark    7 年前

    代码中有两个问题:

    以下内容:

        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);
        }
    

    下一页的链接应包括以下查询:

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

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

    ezsearch 在umbraco中实现搜索时,它非常简单而且构建良好