title: Route with optional parameter is not resolved correctly
body: <p>Here is necessary code to reproduce a very strange problem with ASP.NET MVC 3.0 routing:</p>
  
  <p>Route registration in Global.asax.cs:</p>
  
  <pre><code>routes.MapRoute("History", "Customer/History", new {controller = "User", action = "History", someParam = UrlParameter.Optional});
  routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
  </code></pre>
  
  <p>Here we declare a route to the user's history. But in the URL we want "Customer" instead of "User". Also please note parameter <code>someParam</code>. Controller <code>User</code> does really exist and has action <code>History</code>.</p>
  
  <p>Now usage in view:</p>
  
  <pre><code>&lt;a href="&lt;%= Url.Action("History", "User") %&gt;"&gt;History&lt;/a&gt;
  &lt;a href="&lt;%= Url.Action("History", "User", new { someParam="qqq" }) %&gt;"&gt;History with param&lt;/a&gt;
  </code></pre>
  
  <p>I am using here <code>Url.Action()</code> instead of <code>Html.ActionLink()</code> only for clarity.</p>
  
  <p>And here is the result - how this part of the view was rendered:</p>
  
  <pre><code>&lt;a href="/Customer/History"&gt;History&lt;/a&gt;
  &lt;a href="/User/History?someParam=qqq"&gt;History with param&lt;/a&gt;
  </code></pre>
  
  <p>Now the problem is clear - URL without parameters was resolved correctly, while the URL with parameter starts with "/User" instead of "/Customer".</p>
  
  <p>Questions:</p>
  
  <ol>
  <li>Is it a normal behavior? If yes, why does routing work that way?</li>
  <li><p>Is there any workaround for this? I mean is there any way to get the final result as:</p>
  
  <pre><code>&lt;a href="/Customer/History"&gt;History&lt;/a&gt;
  &lt;a href="/Customer/History?someParam=qqq"&gt;History with param&lt;/a&gt;
  </code></pre></li>
  </ol>