【问题标题】:.NET Routing match all pattern (wildcard) with exceptions.NET 路由匹配所有模式(通配符),但有例外
【发布时间】:2009-10-13 13:26:51
【问题描述】:

如果说我有一个这样定义的路由:"{books}/{*all}",那么任何定义了根文件夹的 URL 都会匹配它(即http://mysite.com/greekbooks/somethingirrelavant.htm)。

但是如果我想更进一步,并且想为 1982 年出版的希腊书提供一个自定义处理程序(即 url http://mysite.com/greekbooks/1982/anythinghere)。我真的不想将此逻辑放入我的第一个路由处理程序中,而是在此 url 匹配时呈现第二个处理服务页面。

问题是"{books}/{*all}" 也会吃掉"{books}/1982/{*all}"

在处理'*' ( all ) 匹配时,基本上如何定义多个路由处理程序?有可能吗?

【问题讨论】:

    标签: .net-3.5 routing


    【解决方案1】:

    您可以通过控制路由的定义顺序来做到这一点,因为 URL 是按照路由添加到 Routes 集合中的顺序来评估的。

    这里是如何处理路由的规则...

    1. 您已定义的路由模式或默认路由 包含的模式(如果有) 在您的项目类型中。
    2. 您将它们添加到 Routes 集合中的顺序。
    3. 您为路线提供的任何默认值。
    4. 您为路线提供的任何约束。
    5. 您是否定义了路由来处理匹配的请求 物理文件。

    ASP.NET Routing

    【讨论】:

      【解决方案2】:

      是的,这是可能的。你会把你的额外的

      {book}/{year}/{*all} 
      

      抢先。我会更进一步,建议您向 {book}/{year}/{*all} 路由添加一个约束,使其仅是数字。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多