Optional UrlParameters in custom feather widget
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)