С таблицей маршрутизации вы можете довольно легко сделать необязательные параметры, просто укажите значения по умолчанию в маршруте файла global.cs.
Так что для страницы поиска с дополнительным запросом и страницей у вас будет что-то вроде
RouteTable.Routes.Add(new Route
{
Url = "Search/[query]/[page]",
Defaults = new { controller="Search", action="Results", page=1 },
RouteHandler = typeof(MvcRouteHandler)
});
По умолчанию страница для вашего поиска равна 1.
Этот пример можно найти здесь в блоге Скотта Гу.