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)