【问题标题】:Cascading MVC controllers with CatchAll Routes使用 CatchAll 路由级联 MVC 控制器
【发布时间】:2010-05-14 10:13:23
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

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

    我将把确切的实现留给你作为练习。 ;o)

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多