public async Task OnGetAsync() { Filter movieFilter = null; // Ist gar kein Filter selektiert (erster Aufruf), prüfe auf Defaultfilter und nehme diesen ggf. als Vorauswahl //if (SelectedFilterId == null) //{ // var defaultFilter = FilterService.GetDefault(); // if (defaultFilter != null) // SelectedFilterId = defaultFilter.Id; //} // Gewählten Filter als Default speichern if (!string.IsNullOrEmpty(SelectedFilterId)) { await FilterService.SetDefault(SelectedFilterId); movieFilter = FilterService.GetDefault(); } // Defaultfilter zurücksetzen bei Auswahl von "Kein Filter" else { await FilterService.ResetDefault(); } // Die Sortierung ist im Gegensatz zum Filter nicht in der Datenbank abgelegt // Stattdessen wird sie als SessionState solange vorgehalten, bis das Session-Timeout (default 20 Minuten) abgelaufen ist // Um SessionState verwenden zu können, muss dieser aktiviert werden, siehe Startup if (MovieSortOrder != MovieSortOrder.None) { HttpContext.Session.SetInt32("MovieSortOrder", (int)MovieSortOrder); } else { var sortOrder = HttpContext.Session.GetInt32("MovieSortOrder"); if (sortOrder > 0) { MovieSortOrder = (MovieSortOrder)Enum.Parse(typeof(MovieSortOrder), sortOrder.ToString()); } } var movies = await MovieService.GetWithGenresAndSourcesAsync(MovieSortOrder); if (!string.IsNullOrEmpty(QuickSearch)) { Movies = new List <MoviesItemViewModel>(movies.Where(m => m.Title.Contains(QuickSearch)).Select(m => new MoviesItemViewModel(m))); } else { Movies = new List <MoviesItemViewModel>(movies.Select(m => new MoviesItemViewModel(m))); } if (movieFilter != null) { Movies = Movies.AsQueryable().Where(FilterBuilder.FilterBuilder <MoviesItemViewModel> .Ref.BuildFilter(movieFilter)).ToList(); } FilterList = new SelectList(await FilterService.GetAsync(), nameof(Filter.Id), nameof(Filter.Name)); }