protected virtual void EnsureFacets(CommerceFilterOptionViewModel model, string facets, IContent content)
 {
     if (model.FacetGroups == null)
     {
         model.FacetGroups = CreateFacetGroups(facets);
     }
 }
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            bindingContext.ModelName = "FilterOption";
            var model = new CommerceFilterOptionViewModel();

            try
            {
                var cmsModel = (CmsFilterOptionViewModel)base.BindModel(controllerContext, bindingContext);
                model = cmsModel as CommerceFilterOptionViewModel;

                if (cmsModel != null && model == null)
                {
                    model = new CommerceFilterOptionViewModel();
                }
            }
            catch
            {
                model = new CommerceFilterOptionViewModel();
            }

            if (model == null)
            {
                return(model);
            }


            var      contentLink = controllerContext.RequestContext.GetContentLink();
            IContent content     = null;

            if (!ContentReference.IsNullOrEmpty(contentLink))
            {
                content = _contentLoader.Get <IContent>(contentLink);
            }

            var query      = controllerContext.HttpContext.Request.QueryString["search"];
            var sort       = controllerContext.HttpContext.Request.QueryString["sort"];
            var facets     = controllerContext.HttpContext.Request.QueryString["facets"];
            var section    = controllerContext.HttpContext.Request.QueryString["t"];
            var page       = controllerContext.HttpContext.Request.QueryString["p"];
            var confidence = controllerContext.HttpContext.Request.QueryString["confidence"];

            SetupModel(model, query, sort, section, page, content, confidence);
            EnsureFacets(model, facets, content);
            return(model);
        }