Remember that a template needs to have a controller token and an action token; these are the only required tokens and have special meaning. A controller will match a controller class and an action will match one of its public methods. Any other template parameter will match the parameter of the same name in the action method. For example, take a route with the following template:
{controller=Search}/{action=Query}/{phrase}
That route will map to this Querymethod in a class called SearchController:
public IActionResult Query(string phrase) { ... }
By convention, the name of the controller in a template does not take the Controller suffix.
If a route token is optional, then it must map to a parameter that has a default value:
{controller=Account}/{action=List}/{page?}
A matching method would have the following signature:
public IActionResult List(int page = 0)
Notice that the page parameter...