You can create a new Route which overrides the GetVirtualPath
method. In this method you add a trailing slash to the VirtualPath
. Like this:
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
VirtualPathData path = base.GetVirtualPath(requestContext, values);
if (path != null)
path.VirtualPath = path.VirtualPath + "/";
return path;
}
For brevity I posted the whole example on CodePaste.net
Now all you have to do is register the routes with routes.MapRouteTrailingSlash()
instead of routes.MapRoute()
.
routes.MapRouteTrailingSlash("register",
"register",
new {controller = "Users", action = "Register"}
);
The route will then add a slash to the path when the GetVirtualPath()
is called. Which RedirectToAction()
will do.