Using MVC PagedList in Sitecore
When you get a lot of items in your list such as news, you obviously want to use pagination. By installing the PagedList.Mvc NuGet package you can easily accomplish this. So I added it to my project and got pagination. However, when I wanted to navigate to the next page, I ran into a problem with the generated URL from:
@Html.PagedListPager(Model, page => Url.Action("Index", new { page }))
The generated URL for the second page is /api/sitecore/News?page=2. Of course, this doesn't work and results in an error message: The resource cannot be found. In my case the URL should be /News?page=2, without /api/sitecore/.
In order to get the /api/sitecore/ part removed, I have edited the Url.Action section, which didn't help. Then I created a custom route. This changed the URL as I wanted, but the solution wasn't okay for me.
So I eventually modified the part after "page =>". The code is now:
@Html.PagedListPager(Model, page => LinkManager.GetItemUrl(Sitecore.Context.Item) + "?page=" + page)
Instead of:
@Html.PagedListPager(Model, page => Url.Action("Index", new { page }))
The URL no longer contains the /api/sitecore/ part, and it has become a dynamic URL based on the current page.