The Model of SearchResults.aspx
is an instance of PersonSearch
; when the request for a new page arrive (a GET request), the action method should take it and compute the new results.
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult SearchResults(PersonSearch search, int? page)
{
ViewData["Results"] = new PaginatedList<Person>(_searchService.FindPersons(search), page ?? 0, 1);
return View("SearchResults", search);
}
Then I have to generate the previous/next links:
<%= Html.ActionLink("Next Page >", "SearchResults", routeValues) %>
If I use routeValues = ViewData.Model
I can see the object properties passed the address, but I can't add the "page" parameter.
It think it would be better to create another object with the correct values, instead of using (and potentially altering the current routevalues):
You need use RouteLink instead ActionLink. Your code should look something like this
This blog post by Scott Guthrie helped me wrap my head around URL Routing: ASP.NET MVC Framework (Part 2): URL Routing
I love that he included test cases!
If you are using Razor (I realize OP asked four years ago before Razor was invented, but people finding this maybe using it).
I was able to get something working by using an inline @helper method.
Usage would be simple --
It isn't the most elegant solution, but it works well if you want to pass an object in as a routeValue, but you need to pass additional items, such as
Controller
,Area
or in OPs casepage
.You need to override ToString().