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 i
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.
@helper RunnerLink(PersonSearch model, int page)
{
var routeParms =new RouteValueDictionary(model.GetType().GetProperties().ToDictionary(p => p.Name, p => p.GetValue(model, null)));
routeParms.Add("page", page.ToString());
routeParms.Add("Controller", "Property");
@Html.ActionLink("Search", "Index", routeParms)
}
Usage would be simple --
@RunnerLink(myPersonSearchInstance, 1)
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 case page.
It think it would be better to create another object with the correct values, instead of using (and potentially altering the current routevalues):
<%=Html.ActionLink("Next Page >", "SearchResults", new {
search = this.Model,
page = 1 //or whatever
}) %>
You need to override ToString().
You need use RouteLink instead ActionLink. Your code should look something like this
@Html.RouteLink("Next", new {controller = "SearchResults", action = "Index", search=samevalue, page=1 })
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!
