2010-05-14 94 views
0

我有一个MVC应用程序,其路线定义与最终路线是一个捕获所有路由到一个“PageController”的数据库驱动的页面集合。我想要实现的是能够向应用程序插入第二个控制器,以捕获第一个控制器传递给它的所有路由,前提是它没有找到数据库中收到的url。级联MVC控制器与CatchAll路线

有效我要排队与捕捉控制器的所有操作:

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,但是这种方式没有按照我的方式工作。

回答

0

尽管我会避免像这样的复杂路由,但我认为最好的做法是使用custom route constraint,它使用缓存列表pages来匹配正确的路由(已成功完成)。

我会为你留下确切的实施练习。 ; o)