Formularz wyszukiwania ASP.NET MVC z paginacją
Tracę słowa, bo czegoś mi brakuje. Właśnie skończyłem ASP.NET MVC 1.0 (WROX) i próbuję zaimplementować widok, który wykonuje proste wyszukiwanie, a następnie wyświetla wyniki w tabeli. Chciałbym wtedy móc przeglądać wyniki.
Mam więc akcję wyszukiwania z ListingsController, pobiera niektóre wartości z FormCollection i odpowiednio filtruje wyniki:
//
//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);
}
Początkowo widok Wyniki zostanie wyświetlony z 25 pierwszymi rekordami na stronie 1. Następnie mam akcję Wyniki, która obsługuje „paginację”:
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);
}
Problem polega na tym, że nie mam już FormCollection, nie mogę poprawnie filtrować wyników. Gdybym więc próbował przejść ze strony powiedzonko1 na stronę 2 za pomocą / Listings / Results? Page = 2, akcja wyników mogłaby zostać uruchomiona i zwróciłaby WSZYSTKIE wyniki zamiast filtrowanego zestawu wyników z akcji wyszukiwania.
Naprawdę jestem zdezorientowany, co tutaj robić i dlaczego nie ma blogów / samouczków wyjaśniających to, co zwykle oznacza, że coś mi brakuje.
Dzięki!