Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 Net MVC:在生成出站URL时重用段变量的值_Asp.net Mvc 4_Asp.net Routing - Fatal编程技术网

Asp.net mvc 4 Net MVC:在生成出站URL时重用段变量的值

Asp.net mvc 4 Net MVC:在生成出站URL时重用段变量的值,asp.net-mvc-4,asp.net-routing,Asp.net Mvc 4,Asp.net Routing,当路由与出站URL匹配时,路由系统将尝试通过查看当前请求中的值来查找路由URL模式中每个段变量的值。如有必要,路由系统将重用来自传入URL的段变量值 摘录自Pro Asp.Net MVC 4手册: 路由系统将仅对以下段变量重用值: 在URL模式中出现的时间早于提供的任何参数 到Html.ActionLink方法。假设我们试图创建一个链接,如 这: @ActionLink(“点击我”,“列表”,“目录”,新的{color=“Aqua”}, 空) 我们为颜色提供了值,但未为页面提供值。但是颜色 在U

当路由与出站URL匹配时,路由系统将尝试通过查看当前请求中的值来查找路由URL模式中每个段变量的值。如有必要,路由系统将重用来自传入URL的段变量值

摘录自Pro Asp.Net MVC 4手册:

路由系统将仅对以下段变量重用值: 在URL模式中出现的时间早于提供的任何参数 到Html.ActionLink方法。假设我们试图创建一个链接,如 这:

@ActionLink(“点击我”,“列表”,“目录”,新的{color=“Aqua”}, 空)

我们为颜色提供了值,但未为页面提供值。但是颜色 在URL模式中出现在页面之前,因此路由系统 不会重用传入URL中的值,路由也不会 匹配

。。。我们强烈建议您不要依赖此行为和 您可以为URL模式中的所有段变量提供值。 依靠这种行为,你最终会对 用户发出请求的顺序

注:摘录所指的路线定义如下:

 routes.MapRoute("MyRoute", "{controller}/{action}/{color}/{page}");
(a)

路由系统将仅对以下段变量重用值: 在URL模式中出现的时间早于提供的任何参数 到Html.ActionLink方法

如果路由系统还重用URL模式中比提供给
Html.ActionLink
的参数更晚出现的段变量值,那么会出现什么问题

(b)

我们强烈建议您不要依赖此行为和 您可以为URL模式中的所有段变量提供值。 依靠这种行为,你最终会对 用户发出请求的顺序

我不明白为什么不为所有段变量提供值会转化为对用户发出请求的顺序做出假设


非常感谢

这个字眼让人困惑,但实际上,这个信息是,不要提供页面,而保留颜色为空。只提供一个控制器就可以了,其他的都为空。不要期望能够给空控制器,而是传递特定的操作。可以随意给出动作和控制器,但在传递颜色时不要尝试将动作保留为空。最后,不要给页面留下之前的任何内容为空。路由引擎容纳空值,但空值是url的结尾。不要期望传递像/Home/Index这样的url//5@Dave答:我想你误解了我的问题,因为我确实了解路由系统的工作原理,但我也想知道,如果允许路由系统也重用URL模式中比提供给Html的参数更晚出现的段变量的值,那么可能会出现什么问题。ActionLinkI可能仍然没有抓住要点,但似乎是相同的问题。ActionLink创建一个链接(例如/home/index/Aqua/1)。如果您传递的是页面而不是颜色的值,那么生成的链接将是什么?是/home/index//1吗?@Dave A:若您传递的是页面的值而不是颜色,那个么路由系统将重用传入URL中颜色的段变量值。因此,如果传入URL是/Home/Index/Blue/100,并且我们有ActionLink(“单击”、“新建操作”、“新建控制器”、“新建{page=1000},null”),那么出站URL将是/NewController/NewAction/Blue/1000Good point。我没有这样想过,但你是对的,路由系统重复使用路由。。。