ASP.NET中MVC4路由的本地化



我试图在我的网站上使用不同的语言,但我真的不知道如何正确设置我的路线才能让它发挥作用。因为我现在有一个重定向循环。

代码如下:

routes.MapRoute(
      null,
      url: "{culture}/{pageName}",
      defaults: new
      {
        culture = UrlParameter.Optional,
        controller = "Redirect",
        action = "Index",
        pageName = "debug"
      });
        routes.MapRoute(
  null,
  "{pageName}/",
  new { controller = "Landing", action = "Index" }
  );
  routes.MapRoute(
  null,
  "{culture}/{pageName}/",
  new { controller = "Landing", action = "Index" },
  new { culture = "^[a-z]{2}" }
  );
  routes.MapRoute(
  null,
  "{culture}/blog/{pageName}",
  new { controller = "Blog", action = "Index" },
  new { culture = "^[a-z]{2}" }
  );
  routes.MapRoute(
  null,
  "blog/{pageName}",
  new { controller = "Blog", action = "Index" }
  );

问题是:如何正确设置路线以查看网站:

如果点击/pageName>转到/pageName(defaultCulture设置在后面并设置为english)else If /en/pageName>重定向到/pageName否则如果/AnyCulture/pageName>转到/AnyCulture/pageNameelse /incorrectUrl>转到主页

感谢阅读/回答:)

您必须为区域性设置参数,以便区域性被识别为参数,相应的操作/控制器可以像暗示您的控制器/操作有这样的参数一样处理它:

    routes.MapRoute(
      null,
      "{culture}/{pageName}/",
      new { controller = "Landing", action = "Index", culture = UrlParameter.Optional },
      new { culture = "^[a-z]{2}" }
      );

最新更新