title: How can we Route something like {calendar}/{controller}/{action}/{id}
body: <p>As a beginner in MVC I'm trying to figure out what's the <strong>best way to accomplish a route</strong> for my needs, and <strong>I'm getting no luck at all</strong>, so I'm kindly ask for any help</p>
  
  <p>My webApp is driven by <strong>Calendars</strong>, and per each <strong>Calendar there are a bunch of actions</strong></p>
  
  <ul>
  <li>Subscribe</li>
  <li>Edit Calendar</li>
  <li>View Winners</li>
  <li>Daily Challenge</li>
  <li>etc...</li>
  </ul>
  
  <p>and I would like to <strong>avoid</strong> passing something like</p>
  
  <pre><code>mydomain.com/calendar/2
  </code></pre>
  
  <p>my idea would be to <strong>hide</strong> the <code>ID</code> so <strong>no one can have logical access to other calendars</strong>, for example</p>
  
  <pre><code>mydomain.com/q2tsT
  </code></pre>
  
  <p>where <code>q2tsT</code> could be a 10 char random generated string and then <strong>I would like to have routes</strong> such as:</p>
  
  <pre><code>mydomain.com/q2tsT/subscribe
  mydomain.com/q2tsT/daily-challenge
  mydomain.com/q2tsT/winners
  mydomain.com/q2tsT/prizes
  </code></pre>
  
  <p><strong>How would I set up my Route</strong> to perform like this?</p>
  
  <p>something like:</p>
  
  <pre><code>routes.MapRoute(
      "CalendarRoute",
      "{calendar}/{controller}/{action}/{id}",
      new { 
          calendar = "Empty", 
          controller = "Frontend", 
          action = "Index", 
          id = UrlParameter.Optional }
  );
  </code></pre>
  
  <p>but what will I do with the <code>calendar</code>? where do I <strong>pick it up</strong> so I can convert to an ID so querying the DB would be faster</p>
  
  <p>I'm kinda lost here :(</p>