如果说我的路由定义如下:"{books}/{*all}"
,那么定义了根文件夹的任何URL都会匹配它(即http://mysite.com/greekbooks/somethingirrelavant.htm)。
但是,如果我想更进一步,并希望为1982年发布的greekbooks(即网址http://mysite.com/greekbooks/1982/anythinghere)提供自定义处理程序,该怎么办?我真的不喜欢将这个逻辑放入我的第一个路由处理程序,但是当匹配此URL时,提供第二个处理服务页面。
问题是"{books}/{*all}"
也会吃"{books}/1982/{*all}"
。
基本上,在处理'*' ( all )
匹配时,如何定义多个路由处理程序?它有可能吗?
答案 0 :(得分:0)
是的,这是可能的。你会把你的额外的
{book}/{year}/{*all}
首先抓住。我会更进一步,建议你为{book} / {year} / {* all}路由添加一个约束,使它只是数字。
答案 1 :(得分:0)
您可以通过控制定义路由的顺序来执行此操作,因为URL会按照路由按照添加到Routes集合的顺序进行评估。
以下是如何处理路线的规则......
- 您定义的路线模式或默认路线 包含的模式(如果有的话) 在您的项目类型中。
- 将它们添加到Routes集合的顺序。
- 您为路线提供的所有默认值。
- 您为路线提供的任何限制。
- 您是否已定义路由以处理与a匹配的请求 物理文件。
醇>