Estoy migrando un sitio de ASP.NET MVC 1 a ASP.NET MVC 2. Por el momento, el sitio es compatible con las siguientes rutas:ASP.NET MVC 2 - do UrlParameter.Optional entries debe estar al final de la ruta?
/{country}/{language}/{controller}/{action}
/{country}/{controller}/{action}
/{language}/{controller}/{action}
/{controller}/{action}
Los formatos para country
y language
son distinguibles por expresiones regulares y tienen restricciones adecuadas. En MVC 1, registré cada uno de estos como una ruta separada, para cada una de alrededor de 20 combinaciones. En MVC 2, he estado tratando de hacer que funcione lo mismo con una ruta para cubrir las cuatro cajas, usando UrlParameter.Optional
, pero parece que no puedo hacerlo funcionar; si defino country
y language
como ambos opcionales, entonces la ruta /Home/Index
por ejemplo, no coincide con éxito la ruta. Esto es lo que estoy tratando de hacer:
routes.MapRoute("Default",
"{country}/{language}/{controller}/{action}",
new { country = UrlParameter.Optional, language = UrlParameter.Optional,
controller = "Home", action = "Index" },
new { country = COUNTRY_REGEX, language = LANGUAGE_REGEX });
se trata simplemente imposible porque mis opcionales están en el inicio de la ruta, o solo estoy perdiendo algo? No encuentro ninguna documentación para decirme que lo que estoy haciendo es imposible o para apuntarme en la dirección correcta.
También me interesa el truco para lograr dicho sistema de enrutamiento si es posible ... –
En lugar de especificarlos todos en uno, ¿por qué no definir simplemente las rutas múltiples para manejarlo? –
Si lees la mitad de la pregunta, eso es lo que estoy haciendo en este momento. Pero en cuatro combinaciones por 20 diferentes tipos de ruta eso es mucho mapeo. Estoy tratando de averiguar si puedo simplificar esto usando UrlParameter.Optional. –