More in this section
Forums / Project Feather / Optional UrlParameters in custom feather widget

Optional UrlParameters in custom feather widget

The forums are in read-only mode. In case that you want to directly contact the Progress Sitefinity team use the support center. In our Google Plus group you can find more than one thousand Sitefinity developers discussing different topics. For the Stack Overflow threads don’t forget to use the “Sitefinity” tag.
1 posts, 0 answered
  1. Stacey
    Stacey avatar
    291 posts
    Registered:
    18 Oct 2012
    28 Mar 2016
    Link to this post

    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)

     

1 posts, 0 answered