title: Html.ActionLink construct wrong link when a non-mvc route is added
body: <p>I have an application here with a mix of webform and mvc. I specify the routing as below</p>
  
  <pre><code>        routes.Add("AspxRoute", new Route("Upload/New", new WebFormRouteHandler&lt;Page&gt;("~/Uploads.aspx")));
  
          routes.MapRoute(
              "Default",                                              // Route name
              "{controller}/{action}/{id}",                           // URL with parameters
              new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
          );   
  </code></pre>
  
  <p>So that virtual path to "Upload/New" actually maps to an aspx webform page.</p>
  
  <p>But my problem is that Html.ActionLink("Test", "Controller", "Action") now renders </p>
  
  <blockquote>
    <p>/Upload/New?Controller=Controller&amp;Action=Action</p>
  </blockquote>
  
  <p>Having looked at the MVC source code, I understand that it is because ActionLink calls to <em><a href="http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.getvirtualpath%28v=vs.100%29.aspx" rel="noreferrer">RouteCollection.GetVirtualPath(requestContext, routeName, mergedRouteValues)</a></em>, where routeName is left to null. And somehow this defaults to use the AspxRoute route to construct the url. I tried to added another route before "AspxRoute", but it seems it always defaults to the non-mvc routehandler one.</p>
  
  <p>How does <em>RouteCollection.GetVirtualPath</em> behave when routeName is null? And why is it behaving this way for my case?</p>
  
  <p>How do I construct a correct url? Do I need to write a new Htmlhelper extension?</p>
  
  <p>Cheers</p>