【问题标题】:MVC 3 Custom Route Handler - Skip to Next Custom Route Rule?MVC 3 自定义路由处理程序 - 跳到下一个自定义路由规则?
【发布时间】:2011-03-14 20:09:07
【问题描述】:

正在查看 asp.net mvc complex routing for tree path 作为如何为我的 MVC 应用程序定义自定义路由处理程序的示例。本质上,我想为最终用户在定义任何给定页面的 URL 时提供最大的灵活性,因此我在界面中为他们提供了一个字段来指定他们自己的自定义 URL。

我的自定义路由处理程序基本上是一个通配符处理程序。它将进行查找,如果找到匹配项,则进行相应的映射。但是,如果没有找到匹配项,我希望它回退并在 global.asax 中找到下一个匹配的规则。那可能吗?或者我是否需要将以前存在于 global.asax 中的映射编码到我的自定义路由处理程序中?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    您应该能够非常简单地实现这一点。

    只需在您的更具体的路线下方设置一条全部捕获路线,在您的控制器中处理全部捕获。

    我猜你只会寻找一个页面键然后将页面返回给用户。

    【讨论】:

      【解决方案2】:

      路由已经这样工作了

      当某个路由定义与请求的 URL 不匹配时,路由会跳到下一个路由定义,以此类推。直到:

      • 它找到了一个计算请求 URL 的路由
      • 最后一个路由定义失败并抛出 404

      提供一个示例,说明您的路由应该如何工作,我们会更轻松地为您提供有关自定义路由处理程序或路由是否适合您的情况的信息。

      【讨论】:

      • 罗伯特,对于最终用户如何创建他们的 URL,基本上没有规则。他们可能正在从另一个系统迁移并希望保留他们的旧 URL,可能想要一个简短的甜蜜 url 用于共享/促销等。所以基本上,我需要一个通配符映射来捕获除主页之外的任何内容。但是既然您提到了它,也许我应该在标准路线之后放入通配符路线。这可能满足 99% 的情况。
      • @Sam:我不知道(你应该知道),但如果你在路由 URL 定义中的任何地方都需要贪婪段,我已经编写了一个支持这一点的类。查看我的博客:erraticdev.blogspot.com/2011/01/… 以防万一您需要类似的东西。
      • @Sam:不客气。总是很高兴听到我的喃喃自语对其他人有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      相关资源
      最近更新 更多