ASP.NET MVC Formulario de búsqueda con paginación
Estoy en una pérdida para las palabras, como debo faltar algo. Acaba de terminar ASP.NET MVC 1.0 (WROX) y estoy intentando implementar una vista que realiza una búsqueda simple y luego presenta los resultados en una tabla. Entonces me gustaría poder hacer una página a través de los resultados.
Así que tengo una acción de búsqueda de ListingsController, toma algunos valores de FormCollection y filtra los resultados en consecuencia:
//
//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, la vista de Resultados se procesará con los primeros 25 registros de la página 1. Luego tengo una acción de Resultados que maneja la "paginación":
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);
}
El problema es que ya no tengo FormCollection, no puedo filtrar correctamente los resultados. Entonces, si intentara pasar de la página 1 a la página 2 utilizando / Listings / Results? Page = 2, la acción de resultados se activaría y devolvería TODOS los resultados en lugar del conjunto de resultados filtrado de la acción de Búsqueda.
Estoy realmente confundido sobre qué hacer aquí y por qué no hay blogs / tutoriales que expliquen esto, lo que normalmente me indica que me estoy perdiendo algo.
¡Gracias!