Skip to content

Products list

Matched /products/{culture?}/list - an optional parameter in the middle of a template.

culture
en

Why did this match?

A middle optional is legal in a template but required at match time - only a trailing run of optionals can be omitted by the URL. That's exactly how the built-in Blazor router treats /products/{culture?}/list too: the literal list after the optional pins every segment in place.

@* Matches /products/en/list (culture = "en").
   Does NOT match /products/list - "list" would have to shift into {culture?}'s
   slot and then nothing is left for the literal. *@
<Broute Path="/products/{culture?}/list" Component="@typeof(ProductsListPage)" />