【问题标题】:Localization with MVC4 Routes in ASP.NET在 ASP.NET 中使用 MVC4 路由进行本地化
【发布时间】:2013-11-21 11:55:46
【问题描述】:

我正在尝试在我的网站中添加不同的语言,但我并不真正了解正确设置路线以使其正常工作的方法。因为有了我目前拥有的东西,我得到了一个重定向循环。

代码如下:

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(默认文化设置在后面并设置为英文) else If /en/pageName > 重定向到/pageName 否则如果/AnyCulture/pageName > 转到/AnyCulture/pageName else/incorrectUrl>回家

感谢阅读/回答:)

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing


    【解决方案1】:

    您必须为文化设置参数,以便文化被识别为参数并且相应的操作/控制器可以处理它,就像暗示您的控制器/操作有这样的参数:

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

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多