If Route doesn't exist -> go to other route using its default action?
<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>