Vladimir Nani
Vladimir Nani

Reputation: 2884

ASP.NET routes problem

If i go to mysite/Catalog it breaks. How can solve it?

routes.MapRoute(
    "Localization", // Route name
    "{lang}/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);

routes.MapRoute(
    "Root",
    "",
    new { controller = "Home", action = "Index", id = "" }
);

Upvotes: 0

Views: 81

Answers (1)

Lukáš Novotný
Lukáš Novotný

Reputation: 9052

It will match your first route thinking "Catalog" is "lang". You need to create constraint for your localizations.

Following route should match requests prefixed with any language code (like en, cs, de or en-US, en-GB...) correctly

routes.MapRoute("Localization", "{lang}/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { lang = "[a-z]{2}(-[a-z]{2})" }
);

Upvotes: 2

Related Questions