Чтобы реализовать страницу результатов поиска на сайте Sitecore 6.3.1, я создал элемент контента на /sitecore/content/Home/Search
и добавил подслой результатов поиска в элементы управления его презентацией. Подуровень использует ListView для отображения результатов поиска и DataPager для обработки нумерации страниц.
Вот выдержка из Search Results.ascx
:
<asp:ListView ID="SearchResults" runat="server">
<LayoutTemplate>
<asp:DataPager ID="Pager" QueryStringField="page" runat="server">
<Fields>
<asp:NumericPagerField ButtonCount="10" />
</Fields>
</asp:DataPager>
<asp:Placeholder ID="itemPlaceholder" runat="server" />
</LayoutTemplate>
...
</asp:ListView>
Обратите внимание, что для параметра QueryStringField
в DataPager задано непустое значение.
При отображении подслоя результаты поиска и элементы управления разбиением на страницы отображаются правильно. Однако гиперссылки на нумерацию страниц идут не по адресу. Вместо перехода по URL-адресу страницы они ссылаются на URL-адрес layout .
Например, если пользователь нажимает на ссылку для страницы 2, можно ожидать, что его браузер перейдет, например, на http://www.example.com/Search.aspx?query=xyz&page=2. Но его браузер фактически ссылается на http://www.example.com/layouts/Generic%20Browser%20Layout.aspx?query=xyz&page=2.
Где DataPager получает фиктивный URL и как это исправить?