Actualicé mi proyecto a ASP.NET 4 RTM
con ASP.NET MVC 2.0 RTM
en la actualidad.Parámetros de ruta opcionales en ASP.NET 4 RTM ya no funcionan como antes
Anteriormente estaba usando ASP.NET 3.5
con ASP.NET MVC 2.0 RTM
.
Algunas de mis rutas no funcionan de repente y no sé por qué. No estoy seguro de si algo cambió entre 3.5 y 4.0, o si esto fue un problema de tipo de regresión en el 4.0 RTM. (Nunca antes probé mi aplicación con 4.0).
Me gusta usar Url.RouteUrl("route-name", routeParams)
para evitar ambigüedades al generar URL. Aquí está mi definición de ruta para una página de galería. Quiero que imageID
sea opcional (se obtiene una página de miniaturas si no se especifica).
// gallery id
routes.MapRoute(
"gallery-route",
"gallery/{galleryID}/{imageID}/{title}",
new { controller = "Gallery", action = "Index",
galleryID = (string) null,
imageID = (string) null,
title = (string) null}
);
En .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
En .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
Anteriormente I podría suministrar solo el galleryID
y todo lo demás se ignorarían en la URL generada. Pero ahora parece que necesito especificar todos los parámetros hasta title
- o se da por vencido al determinar la URL.
URL entrantes funcionan bien para /gallery/cats
y que está asignado correctamente a través de esta regla con imageID
y title
tanto se le asigna null
en mi controlador.
También probé las rutas de INCOMING con http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx y todas funcionan bien.
Si alguien puede probar esto en .NET 4 RC Yo agradecería mucho. Solo tengo una máquina :-( –