title: If Route doesn't exist -> go to other route using its default action?
body: <p>So I'm having a little problem here with routing.  </p>
  
  <p>There are two parts to this web application:<br>
    1. Brochure / Display Website<br>
    2. Internal Site / Client Application</p>
  
  <p>We wanted a way to release changes for the brochure without having to do a whole release of said <em>Web</em> application.
  Visiting existing named views will take the user to a brochure page, however if it doesn't exist, it will act like they are a <em>client</em> and will redirect them to their company's login screen. </p>
  
  <p>Global.asax:</p>
  
  <pre><code>//if view doesnt exist then url is a client and should be redirected
  routes.MapRoute(
      name: "Brochure",
      url: "{id}",
      defaults: new { controller = "brochure", action = "Brochure", id = "Index" },
      namespaces: new[] { "Web.Areas.Brochure.Controllers" }
  );
  
  //This is home page
  routes.MapRoute(
      name: "HomeDefault",
      url: "{client}/{action}",
      defaults: new { controller = "home", action = "index" },
      namespaces: new string[] { "Web.Controllers" }
  );
  </code></pre>
  
  <p>Controller:</p>
  
  <pre><code>/// &lt;summary&gt; Check if the view exists in our brochure list &lt;/summary&gt;
  private bool ViewExists(string name) {
      ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
      return (result.View != null);
  }
  
  /// &lt;summary&gt; Generic action result routing for all pages. 
  /// If the view doesn't exist in the brochure area, then redirect to interal web
  /// This way, even when we add new pages to the brochure, there is no need to re-compile &amp; release the whole Web project. &lt;/summary&gt;
  public ActionResult Brochure(string id) {
      if (ViewExists(id)) {
          return View(id);
      }
  
      return RedirectToRoute("HomeDefault", new { client = id });
  }
  </code></pre>
  
  <p>This code works fine up until we log in and go to the landing page. It seems to keep the <strong>Brochure</strong> action in the route and doesn't want to go to the subsequent controller which results in a 500 error.
  e.g. 'domain/client/Brochure' when it <em>needs</em> to be: 'domain/client/Index'</p>
  
  <p><strong>Things tried but not worked</strong>:  </p>
  
  <ul>
  <li>Changing <code>RedirectToRoute()</code> to a <code>RedirectToAction()</code> - this results in a
  finite loop of going back to the <code>ActionResult Brochure()</code>. So
  changing controllers through that didn't work.   </li>
  <li>Create an ActionResult called <code>Brochure()</code> inside the 'HomeController'. It
  doesn't even get hit.</li>
  <li>Passed in <code>namespaces</code> for <code>RedirectToRoute()</code> as an attribute. I knew this would probably not work, but it was worth a try.</li>
  </ul>
  
  <hr>
  
  <p><strong>So the question is:</strong><br>
  How can I get the route to act properly?</p>