Fix for using preservedRouteParameters so they will work whether the value is provided as part of the route or part of the query string.

The route value collection contained an empty value for "id" (which was configured in the route as optional). This caused the route value to take precedence even though it was empty. To match the behavior MVC, the query string value was made to overwrite the route value in this case. Route values still take precedence over query string values when both are provided.