Formulário de pesquisa da ASP.NET MVC com paginação
Estou sem palavras, pois devo estar perdendo alguma coisa. Acabei de concluir a ASP.NET MVC 1.0 (WROX) e estou tentando implementar uma exibição que executa uma pesquisa simples e renderiza os resultados em uma tabela. Eu gostaria de poder folhear os resultados.
Então eu tenho uma ação de busca de ListingsController, pega alguns valores de FormCollection e filtra os resultados de acordo:
//
//POST: /Listings/Search
// /Listings/Page/2
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Search(FormCollection collection,int? page)
{
var listings = listingRepository.GetListings();
//filter
if (collection["TypeOfHouse"] != null)
{
string[] typeList = collection["TypeOfHouse"].Split(',');
foreach (string type in typeList)
{
listings = from l in listings
where l.TypeOfHouse == type
select l;
}
}
//display the first page of results
int pageSize = 25;
var paginatedListings = new PriviledgeV1.Helpers.PaginatedList<Listing>(listings, 0, pageSize);
return View("Results", paginatedListings);
}
Inicialmente, a visualização Results será renderizada com os primeiros 25 registros da página 1. Então, eu tenho uma ação Results que lida com a "paginação":
public ActionResult Results(int? page)
{
int pageSize = 25;
var listings = listingRepository.GetListings();
var paginatedListings = new PriviledgeV1.Helpers.PaginatedList<Listing>(listings, page ?? 0, pageSize);
return View(listings);
}
O problema é que eu não tenho mais o FormCollection, não posso filtrar adequadamente os resultados. Portanto, se eu tentasse passar da página 1 para a página 2 usando / Listings / Results? Page = 2, a ação de resultados seria acionada e retornaria TODOS os resultados em vez do conjunto de resultados filtrados da ação Pesquisar.
Estou muito confuso sobre o que fazer aqui, e por que não há blogs / tutoriais explicando isso, o que normalmente me sinaliza que estou perdendo alguma coisa.
Obrigado!