2012-01-31 12 views
5

Mam bardzo prostą stronę ASP.NET MVC, która wyświetla obrazy z bazy danych. Użytkownik wypełnia niektóre parametry wyszukiwania, a widok zwraca listę obrazów z bazy danych, które spełniają kryteria wyszukiwania.ASP. NET MVC Przechowywanie wielu parametrów między widokami

Dodaję teraz paginację, gdzie w zależności od numeru strony pomijam pewną liczbę obrazów pobranych z bazy danych. Mam to działa na pierwszej stronie. Moje parametry wyszukiwania zostaną utracone po kliknięciu na drugą stronę wyników, ponieważ nie mam mechanizmu umożliwiającego przechowywanie parametrów wyszukiwania między widokami w danym momencie.

Jakie jest najlepsze podejście. Mogłem mieć wiele parametrów wyszukiwania. Czy powinienem przechowywać je wszystkie w sesji lub w ukrytych polach? To wygląda jak włamanie. Czy powinienem mieć oddzielny ViewModel do przechowywania parametrów wyszukiwania i przechowywania go w sesji?

Jakie jest typowe podejście do wykonania?

Odpowiedz

1

Zazwyczaj przechowujesz dane o krzyżowej paginacji w ukrytych polach. Aby skalowalność, sesje powinny być ograniczone do danych związanych z sesją. Jeśli umieszczenie danych w ukrytych polach otwiera lukę, możesz rozważyć serializację modelu widoku i zaszyfrowanie go jako jednego ukrytego pola. Umieszczenie go w adresie URL to kolejna opcja, chociaż ogranicza się do ilości treści, które można tam umieścić.

+0

Dzięki. Podoba mi się pomysł serializacji modelu widoku i posiadania jednego ukrytego pola. Pochodzę z tła WPF/WinForms i pomysł posiadania wielu ukrytych pól na stronie po prostu nie jest przyjemny. Chyba muszę z tym żyć. Zrobiłem trochę więcej poszukiwań i wydaje się, że jest to najbardziej powszechne podejście. – Lance

1

Umieściłbym je wszystkie w kwerendach linków "Następny" i "Poprzedni". Umożliwi to odwiedzającym zapisanie pełnego adresu URL i powrót do tej samej strony z tymi samymi ustawieniami sortowania i filtrowania.

Powiązane problemy