1

概括:

我正在审查我最近开始工作的站点的路线图。我遇到了一条我不熟悉的路线:

RouteTable.Routes.MapRoute(NamedRoutes.ROUTE_NAME, "urlSegment1/urlSegment2", new { });

请注意,MapRoute 的“默认”参数是一个空对象。这通常是我指定控制器、操作和任何参数的地方。我一直在谷歌搜索,发现我没有提出正确的问题来产生我正在寻找的答案。

问题:

当 MapRoute 的“defaults”参数为空对象时,MVC 路由如何表现?一个答案会很棒。支持文档会更好。

编辑:

实际使用的路线是:

routes.MapRoute(NamedRoutes.BROWSE_MEN, "browse/Mens", new { } });

使用以下方法生成 URL 时会出现问题:

Html.BeginForm("Add", "Signup", FormMethod.Post, new { id = "signup", enctype = "multipart/form-data" })
4

4 回答 4

0

它们被映射为stings,在这种情况下匹配所有内容。仅当 url 未提供控制器/操作参数之一时,默认值才存在。在这种情况下,没有任何默认值是没有意义的。它实际上正在捕获所有字符串/字符串。

于 2012-09-20T14:45:55.413 回答
0

当您不指定控制器时,无论是作为 URL 参数(令牌)还是默认值,您都应该得到一个 InvalidOperationException:

匹配的路由不包含必需的“控制器”路由值。

动作也一样。那是针对传入的请求。对于 URL 生成,不需要控制器或操作。

于 2012-09-20T19:16:20.517 回答
0

您拥有的路线将匹配一个请求,该请求恰好包含 url ex 中的两个段。http://localhost/urlSegment1/urlSegment2并返回 404。我猜您定义了此路由以避免以下路由处理此请求。

于 2012-09-20T14:50:02.393 回答
-1

您不必指定默认值。

所以它就像没有指定默认对象一样工作

于 2012-09-20T13:19:27.823 回答