使用CatchAll路由级联MVC控制器

时间:2010-05-14 10:13:24

标签: c# asp.net-mvc

我有一个MVC应用程序,其路由定义为最终路由是捕获所有路由到“PageController”,用于数据库驱动的页面集合。我想要实现的是能够向应用程序插入第二个控制器以捕获第一个控制器传递到的所有路由,如果它没有找到在数据库中收到的URL。

实际上,我希望通过捕获所有操作来排队控制器:

public ActionResult PageCatchall(string url)
{
    var page = repository.Get<Page>(string url);
    if (page != null)
    {
        // Handle the request
       return View(page)
    }
    // Otherwise pass to a new controller

   ????
}

对于如何解决这个问题,任何人都有任何好的想法?我已经尝试过RedirectToAction,但这要求下一个控制器具有与该操作不同的路径。我已经尝试过ActionInvoker,但是这样做不像我做的那样。

1 个答案:

答案 0 :(得分:0)

虽然我会避免像这样的复杂路由,但我想最好的办法是使用custom route constraint使用pages的缓存列表来匹配正确的路由(已成功完成)。 / p>

我会留下您作为练习的确切实施。 ; O)