我将我的项目升级到ASP.NET 4 RTM
今天ASP.NET MVC 2.0 RTM
。
我以前使用ASP.NET 3.5
with ASP.NET MVC 2.0 RTM
。
我的一些路线突然不起作用,我不知道为什么。我不确定 3.5 和 4.0 之间是否发生了变化——或者这是否是 4.0 RTM 中的回归类型问题。(我以前从未使用 4.0 测试过我的应用程序)。
我喜欢Url.RouteUrl("route-name", routeParams)
在生成 URL 时避免歧义。这是我的画廊页面的路线定义。我想imageID
是可选的(如果你没有指定它,你会得到一个缩略图页面)。
// gallery id
routes.MapRoute(
"gallery-route",
"gallery/{galleryID}/{imageID}/{title}",
new { controller = "Gallery", action = "Index",
galleryID = (string) null,
imageID = (string) null,
title = (string) null}
);
在 .NET 3.5 / ASP.NET 2.0 RTM / IIS7
Url.RouteUrl("gallery-route", new { galleryID = "cats"})
=> /gallery/cats
Url.RouteUrl("gallery-route", new { galleryID = "cats", imageID = "4")
=> /gallery/cats/4
Url.RouteUrl("gallery-route", new { galleryID = "cats", imageID = "4", title = "tiddles")
=> /gallery/cats/4/tiddles
在 .NET 4.0 RTM / ASP.NET 2.0 RTM / IIS7
Url.RouteUrl("gallery-route", new { galleryID = "cats"})
=> null
Url.RouteUrl("gallery-route", new { galleryID = "cats", imageID = "4")
=> /gallery/cats/4
Url.RouteUrl("gallery-route", new { galleryID = "cats", imageID = "4", title = "tiddles")
=> /gallery/cats/4/tiddles
以前我只能提供galleryID
并且在生成的 URL 中将忽略其他所有内容。但现在看起来我需要指定所有参数,直到title
- 或者它放弃确定 URL。
传入的 URL 可以正常工作,/gallery/cats
并且通过此规则正确映射,imageID
并且两者都在我的控制器title
中分配。null
我还使用http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx测试了 INCOMING 路由,它们都工作正常。