当路由与出站 URL匹配时,路由系统将尝试通过查看当前请求中的值来查找路由 URL 模式中每个段变量的值。如有必要,路由系统将重用来自传入 URL的段变量值
摘自Pro Asp.Net MVC 4书:
路由系统将仅重用在 URL 模式中出现早于提供给 Html.ActionLink 方法的任何参数的段变量的值。假设我们尝试创建这样的链接:
@Html.ActionLink("点击我", "列表", "目录", new {color="Aqua"}, null)
我们为颜色提供了一个值,但没有为页面提供值。但是颜色出现在 URL 模式中的页面之前,因此路由系统不会重用来自传入 URL 的值,并且路由将不匹配。
...我们强烈建议您不要依赖此行为,而是为 URL 模式中的所有段变量提供值。通过依赖这种行为,您最终会对用户发出请求的顺序做出假设
注意:摘录所指的路线定义为:
routes.MapRoute("MyRoute", "{controller}/{action}/{color}/{page}");
一个)
路由系统将仅重用在 URL 模式中出现早于提供给 Html.ActionLink 方法的任何参数的段变量的值
如果路由系统还重用了在URL 模式中出现的段变量的值而不是提供给的参数,那么会出现什么问题?Html.ActionLink
b)
我们强烈建议您不要依赖此行为,而是为 URL 模式中的所有段变量提供值。通过依赖这种行为,您最终会对用户发出请求的顺序做出假设
我不明白不为所有段变量提供值如何转化为对用户提出请求的顺序进行假设?!
非常感激