Optional UrlParameters in custom feather widget

Posted by Community Admin on 05-Aug-2018 18:11

Optional UrlParameters in custom feather widget

All Replies

Posted by Community Admin on 28-Mar-2016 00:00

I have a custom feather widget that I am using to show Master/Detail views for Sitefinity's Ecommerce content type.  Now I need to figure out a way to also allow filtering by a few different scenarios.  I may either have a classificaiton or I may have a Sitefinity product type coming as a parameter.  I had planned to put some logic in to handle them respectively, but I just cannot figure out how to do this with auto-routing.

       public ActionResult Index()
       
           ViewBag.CurrentPageUrl = this.GetCurrentPageUrl();
 
           return View("Default");
       
 
public ActionResult Details(Product productItem)
       
           var viewModel = service.CreateProductDetailsViewModel(productItem);
 
           return View(viewModel);
       

I have tried adding a ListByTaxon action, but it never seems to get hit.  I instead get a 404.

public ActionResult ListByTaxon(ITaxon taxonFilter, int? page)
     
           string fieldName;
           if (taxonFilter.Taxonomy.Name == "Categories")
               fieldName = taxonFilter.Taxonomy.TaxonName;
           else
               fieldName = taxonFilter.Taxonomy.Name;
 
           ViewBag.WindowTypeName = fieldName;
 
           return View("Default");
       

 

I have tried adding a custom action with RelativeRoute, but that destroys the ability to use the built-in auto-routing for master/detail.

Another thought I had was to put in HandleUknownAction, but I am only pulling one parameter back when I am passing two.  I am guessing that is due to the actions only taking 1.

protected override void HandleUnknownAction(string actionName)
        
 
            var urlParameters = this.ControllerContext.RouteData.Values["action"];
            if (urlParameters != null && urlParameters.Any())
            
                if (urlParameters[0] == "custom-type")
                
                    this.Response.StatusCode = (int)HttpStatusCode.OK;
 
                    RouteHelper.SetUrlParametersResolved(true);
                    ViewBag.CustomTypeName = urlParameters[1];
 
                    View("Default").ExecuteResult(this.ControllerContext);
                
            
 
 
            base.HandleUnknownAction(actionName);
        

 

The conditions I am looking to allow are:

page/products/ (master view)

page/products/info (details view)

page/products/type/producttype (custom product type via Sitefinity Ecommerce)

page/products/application/classification (this would be custom classifications)

 

This thread is closed