ASP.NET 4 RTM
プロジェクトをASP.NET MVC 2.0 RTM
今日にアップグレードしました。
以前は で使用ASP.NET 3.5
していまし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
以前は、生成された URL で のみを指定でき、galleryID
それ以外はすべて無視されていました。しかし、今ではすべてのパラメーターを指定する必要があるように見えますtitle
-またはURLの決定をあきらめます.
受信 URLは正常に機能/gallery/cats
し、このルールを介して正しくマップされimageID
、title
両方がnull
コントローラーに割り当てられています。
また、 http: //haacked.com/archive/2008/03/13/url-routing-debugger.aspx を使用して INCOMING ルートをテストしたところ、すべて正常に動作しました。