示例#1
0
 private void BrowseImageView_OnLoaded(object sender, RoutedEventArgs e)
 {
     if (_context == null)
     {
         _context = DataContext as BrowseImagesViewModel;
     }
 }
        public IActionResult Index(BrowseImagesViewModel viewModel)
        {
            //Implement an empty cache List named cacheEntryList
            List <FileUpload> cacheEntryList;

            if (!_memoryCache.TryGetValue(CacheKeysClass.AllImagesFound, out cacheEntryList))
            {
                // cacheEntryList will be created taking images from DataRepository using repo.GetFileUploads()
                cacheEntryList = repo.GetFileUploads().OrderByDescending(x => x.Image.DateAdded).ToList();

                // Add image in CacheKeysClass in AllImagesFound property
                _memoryCache.Set(CacheKeysClass.AllImagesFound, cacheEntryList);
            }


            var listOfAllCategories = repo.GetCategories().ToList();
            var IdForAllCategories  = repo.GetCategories().Where(x => x.Id == viewModel.CategoryId).FirstOrDefault();

            if (viewModel.CategoryId == 0 || IdForAllCategories.Name == "All Categories")
            {
                //Initial, before to implement cache, AllImages came from DataRepository
                //var AllImages = repo.GetFileUploads().ToList();


                var viewObjectWithCache = new BrowseImagesViewModel
                                          //{ FileUpload = AllImages };

                                          // Now, FileUpload property of viewObjectWithCache object is taken from cacheEntryList instead of AllImages
                {
                    FileUpload = cacheEntryList
                };

                viewObjectWithCache.Categories = listOfAllCategories.Select(x => new SelectListItem
                {
                    Text  = x.Name,
                    Value = x.Id.ToString()
                });

                return(View(viewObjectWithCache));
            }
            else
            {
                // Initial, before to implement cache, AllImages came from DataRepository using repo.GetFileUploads()
                //var AllImages = repo.GetFileUploads().ToList();

                var selectedViewObject = new List <FileUpload>();

                //selectedViewObject contains initial AllImages from DB with specific CategoryId
                //selectedViewObject = AllImages.Where(x => x.Image.CategoryId == vm.CategoryId).ToList();


                // Now, selectedViewObject list is taken from cacheEntryList
                selectedViewObject = cacheEntryList.Where(x => x.Image.CategoryId == viewModel.CategoryId).ToList();


                var objectWithCache = new BrowseImagesViewModel

                                      // Now, FileUpload property of objectWithCache object is taken from selectedViewObject list
                {
                    FileUpload = selectedViewObject
                };

                objectWithCache.Categories = listOfAllCategories.Select(x => new SelectListItem
                {
                    Text  = x.Name,
                    Value = x.Id.ToString()
                });

                return(View(objectWithCache));
            }
        }