我想创建一个自定义路由系统ASP.NET MVC 4项目,以使我的网站多语言。我想在url中携带culture参数,如localhost / en / controllerName / actionName。但问题是当我写例如localhost / home路由引擎假设“home”作为文化名称。我该如何解决这个问题?
答案 0 :(得分: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 }
);