Ну, каков источник данных? Ваше действие может принять несколько аргументов по умолчанию, т. Е.
ActionResult Search(string query, int startIndex, int pageSize) {...}
по умолчанию в настройке маршрутов, так что startIndex равен 0, а pageSize (скажем) 20:
routes.MapRoute("Search", "Search/{query}/{startIndex}",
new
{
controller = "Home", action = "Search",
startIndex = 0, pageSize = 20
});
Чтобы разделить канал, вы можете использовать LINQ довольно легко:
var page = source.Skip(startIndex).Take(pageSize);
(или умножение, если вы используете «pageNumber» вместо «startIndex»)
С LINQ-toSQL, EF и т. Д. - это должно «скомпилировать» и в базу данных.
После этого вы сможете использовать экшн-ссылки на следующую страницу (и т. Д.):
<%=Html.ActionLink("next page", "Search", new {
query, startIndex = startIndex + pageSize, pageSize }) %>