コード例 #1
0
        public Task ApplyFiltersFromUrlAsync(ICollection <FilterCategoryViewModel> filterCategory, ProductFiltersUrlModel urlData)
        {
            foreach (var category in filterCategory)
            {
                foreach (var filter in category.Filters)
                {
                    var properties = urlData.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

                    foreach (var prop in properties)
                    {
                        if (prop.Name == filter.Name && prop.Name != "MinPrice" && prop.Name != "MaxPrice" && prop.Name != "Page" && prop.Name != "OrderBy")
                        {
                            var val = this.GetPropertyValue(urlData, prop.Name) as string[];

                            if (val.Any(x => x == filter.Value))
                            {
                                filter.IsChecked = true;
                                break;
                            }
                        }
                    }
                }
            }

            if (decimal.TryParse(urlData.MaxPrice, out decimal maxPrice) && decimal.TryParse(urlData.MinPrice, out decimal minPrice))
            {
                string maxPriceString = maxPrice.ToString();
                string minPriceString = minPrice.ToString();


                var priceFilters = filterCategory.FirstOrDefault(x => x.ViewSubCategoryName == "Price");

                priceFilters.Filters.FirstOrDefault(x => x.Name == "MinPrice").Value = minPriceString;

                priceFilters.Filters.FirstOrDefault(x => x.Name == "MaxPrice").Value = maxPriceString;
            }

            var orderByCategory = filterCategory.FirstOrDefault(x => x.ViewSubCategoryName == "Order By");


            if (orderByCategory != null)
            {
                var orderByFilters = orderByCategory.Filters;
                var orderBy        = orderByFilters.FirstOrDefault(x => x.Value == urlData.OrderBy);
                orderBy.IsChecked = true;
            }
            return(Task.CompletedTask);
        }
コード例 #2
0
        private object GetPropertyValue(ProductFiltersUrlModel urlData, string propName)
        {
            var prop = urlData.GetType().GetProperty(propName);

            return(prop.GetValue(urlData, null));
        }