title: ASP.NET MVC Url.Action adds current route values to generated url
body: <p>I have seen this question a couple of times here in SO but none of them with any acceptable answer:</p>
  
  <p><a href="https://stackoverflow.com/questions/6950470/asp-net-mvc-url-action-includes-current-route-data">ASP.NET MVC @Url.Action includes current route data</a><br>
  <a href="https://stackoverflow.com/questions/4374972/asp-net-mvc-implicitly-adds-route-values">ASP.NET MVC implicitly adds route values</a></p>
  
  <p>Basically I have Controller with an action method called Group, it has an overload that receives no parameters and displays a list of elements and another one that receives an id and displays details for that group.</p>
  
  <p>If I do something like this:</p>
  
  <pre><code>Url.Action("Group", "Groups");
  </code></pre>
  
  <p>From the main page of the site (/) it returns an url like this:</p>
  
  <pre><code>"mysite.com/Groups/Group"
  </code></pre>
  
  <p>which is alright
  Now, if the current address of the site is /Groups/Group/1
  And I call the same method</p>
  
  <pre><code>Url.Action("Group", "Groups");
  </code></pre>
  
  <p>the returned url is this:</p>
  
  <pre><code>"mysite.com/Groups/Group/1"
  </code></pre>
  
  <p>It automatically adds the value of the route for the current page when generating the URL.
  Even if I generate the URL this way:</p>
  
  <pre><code>Url.Action("Group", "Groups", null);
  </code></pre>
  
  <p>Thus explicitly specifying that I don't want any route values, the generated URL is the same.
  To get the address I want I have to explicitly set the route value to an empty string, like so:</p>
  
  <pre><code>Url.Action("Group", "Groups", new {id=""});
  </code></pre>
  
  <p>This will generate the following url:</p>
  
  <pre><code>"mysite.com/Groups/Group"
  </code></pre>
  
  <p>My question is, why does this happen? If I don't set any route values it shouldn't add them to the generated URL.</p>