示例#1
0
 public CatalogExtendedPagingFilteringModel()
 {
     ManufacturerFilter     = new ManufacturerFilterModel();
     CategoryFilter         = new CategoryFilterModel();
     ProductAttributeFilter = new AttributeFilterModel();
     PriceRangeSliderFilter = new PriceRangeSliderModel();
     OuterSorting           = ProductOuterSortingEnumAF.None;
     //PriceRangeSliderItem = new PriceRangeSliderItemModel();
 }
        public override IViewComponentResult Invoke(object data = null)
        {
            var dataAsDict = data as Dictionary <string, object>;

            if (dataAsDict == null)
            {
                return(R.Success.ComponentResult);
            }
            var searchModel = dataAsDict["model"] as ProductSearchModel;

            if (searchModel == null)
            {
                return(null);
            }
            var selectedFilters       = _searchQueryParserService.ParseToDictionary(searchModel.Filters);
            var availableFilterModels = searchModel.AvailableFilters.Select(x =>
            {
                var model = new AttributeFilterModel()
                {
                    FilterTitle  = x.Key,
                    FilterValues = x.Value.Select(y =>
                    {
                        return(new SelectListItem()
                        {
                            Text = y,
                            Value = y,
                            Selected = selectedFilters != null && selectedFilters.ContainsKey(x.Key) &&
                                       selectedFilters[x.Key].Contains(y, StringComparer.InvariantCultureIgnoreCase)
                        });
                    })
                                   .ToList()
                };
                return(model);
            }).ToList();

            return(R.Success.With("filters", availableFilterModels).ComponentResult);
        }