For link generation to areas, we need to provide the set of values that
the route could potentially provide.
Basically if we know what action we want to reach, we want to know whether
or not a given route could hit that action before giving it the OK to
generate a link.
For instance a route like '{controller}' couldn't hit an action like
'HomeController:DoACoolThing', since it can never provide a value for
'action'. This makes it possible for WebFX to make the right decision
without changing the behavior of any of the routing constructs. This also
has the side-effect of removing a class of order dependencies in routing
that cause bad links to be generated.
We'll need to access the accepted values to do proper link generation, so
separating this process out into 2 parts.
Also moving defaults into the TemplateBinder because they are conceptually
part of the route, not part of the request. I'll do the same for
TemplateMatcher soon, but it's a big change and worth separating.
This is heavily based right now on raw Owin as the request/response model
since that will work for building samples/tests, and doesn't require
ifdefs in the code for k10. Once it's feasible, I'll port this to use the
Microsoft.AspNet.Abstractions types.
The sample here includes some basic route/endpoint implementations just to
prove that the route engine works in naive scenarios. These might live on
in the future in some form, but for now it's just part of the sample.
The next step is to integrate this with WebFX and start developing the
integration/configuration story for WebFX.