Zaktualizowałem mój projekt do ASP.NET 4 RTM
dzisiaj z ASP.NET MVC 2.0 RTM
.Opcjonalne parametry trasy w ASP.NET 4 RTM nie działają już tak jak wcześniej
Poprzednio używałem ASP.NET 3.5
z ASP.NET MVC 2.0 RTM
.
Niektóre z moich tras nie działają nagle i nie wiem dlaczego. Nie jestem pewien, czy coś zmieniło się pomiędzy 3.5 a 4.0 - lub jeśli był to problem typu regresji w RTM 4.0. (Nigdy wcześniej nie testowałem mojej aplikacji z 4.0).
Lubię używać Url.RouteUrl("route-name", routeParams)
, aby uniknąć niejednoznaczności podczas generowania adresów URL. Oto moja definicja trasy dla strony galerii. Chcę, aby imageID
było opcjonalne (jeśli go nie określisz, pojawi się strona z miniaturami).
// gallery id
routes.MapRoute(
"gallery-route",
"gallery/{galleryID}/{imageID}/{title}",
new { controller = "Gallery", action = "Index",
galleryID = (string) null,
imageID = (string) null,
title = (string) null}
);
W .NET 3.5/2.0 RTM ASP.NET/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
W .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
Wcześniej może dostarczyć tylko numer galleryID
i wszystko inne zostanie zignorowane w wygenerowanym adresie URL. Ale teraz wygląda na to, że muszę określić wszystkie parametry aż do title
- lub rezygnuje z określania adresu URL.
przychodzące adresy działać dobrze dla /gallery/cats
i że jest prawidłowo odwzorowane dzięki tej reguły z imageID
i title
jest przypisany null
zarówno w moim kontrolera.
Sprawdziłem również INCOMING trasy z http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx i wszystkie działają poprawnie.
Jeśli ktoś mógłby to sprawdzić w .NET 4 RC bym naprawdę wdzięczny. Mam tylko jedną maszynę :-( –