0

我想创建一个自定义路由系统 ASP.NET MVC 4 项目来使我的网站多语言。我想在 url 中携带文化参数,如 localhost/en/controllerName/actionName。但问题是当我编写例如 localhost/home 路由引擎假设“home”作为文化名称时。我怎么解决这个问题?

4

1 回答 1

0

如果您的所有路线都将强制执行文化参数,您可以使用以下内容:

routes.MapRoute(
    name: "LocalizedDefault",
    url: "{lang}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new { lang = @"(es|en|fr)" }
);

如果您仍然想响应localhost/home,只需将默认路由放在上面的路由之后,这样第一个将不会因为约束而匹配并回退到第二个:

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
于 2012-12-22T17:42:56.500 回答