【问题标题】:ASP.Net MVC 5 routing with culture url带有文化 url 的 ASP.Net MVC 5 路由
【发布时间】:2014-02-09 16:41:00
【问题描述】:

我遵循this 指南,它在我的语言支持下运行良好。网址之类的 http://domain.com:33982/en-us/Test 效果很好。

但是我的问题是我希望它可以使用 http://domain.com:33982/Test 也是。如果没有链接中的文化,我无法弄清楚如何路由它...... 我在 RouteConfig.cs 中的路线

            routes.MapRoute(
            name: "Default",
            url: "{culture}/{controller}/{action}/{id}",
            defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
        routes.MapRoute(
name: "MissingCulture",
url: "{controller}/{action}/{id}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Test", action = "PageMissing", id = UrlParameter.Optional }
);

我真的不明白为什么它不起作用。当我转到 /Test 时,只会将我重定向到默认的 Home/Index。

有什么建议吗?谢谢

【问题讨论】:

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


【解决方案1】:

那是因为第一条和第二条路线都匹配。可选参数使应用程序选择第一个匹配的:所以第一个总是被选中。

试试这个:

        routes.MapRoute( name: "DefaultWithCulture"
                       , url: "{culture}/{controller}/{action}/{id}"
                       , defaults: new { culture = "en-us", controller = "Home", action = "Index", id = UrlParameter.Optional }
                       , constraints: new { culture = "[a-z]{2}-[a-z]{2}" }
        );

        routes.MapRoute( name: "Default"
                       , url: "{controller}/{action}/{id}"
                       , defaults: new { culture = "xx-xx", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

它在这里起作用(在他们背后重新培养文化):

http://host/ (en-us)
http://host/Home/Index (xx-xx)
http://host/zh-cn/Home/Index (zh-cn)

【讨论】:

  • 真的不想在 route.cs 中添加测试(也就是我所有控制器的名称)。在这种情况下真的想使用{controller}。
  • 只是一个例子,向您展示匹配引擎的问题。你必须做一些事情来让路由引擎做出正确的决定。更新示例。
  • 我看到了你的例子,有什么办法没有 DefaultCulture 吗?我真的希望它与 domain.com/{controller} 一起使用,并且不希望它仅仅因为文化不存在而重定向到错误页面......
  • 我假设约束应该是:约束:新 {culture="[a-z]{2}-[a-z]{2}" } 因为另一个不工作(编译错误)。但是,它似乎仍然不起作用。 /en/Test 不起作用。现在让它工作的唯一方法是:“Test/Index”,甚至 /Test/work。
  • 如果你使用 en-us?
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多