【问题标题】:Define route for specific URL定义特定 URL 的路由
【发布时间】:2020-10-11 06:34:06
【问题描述】:

我的 ASP.NET MVC 5 项目是多语言的,我使用文化来更改语言。

我已经定义了带有文化的默认路由,如下所示:

public static void RegisterRoutes(RouteCollection routes)
{
    var _cul = CultureHelper.GetCurrentCulture() != null
            ? CultureHelper.GetCurrentCulture()
            : ConfigurationSettings.AppSettings["WebSiteDefaultCulture"];

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapMvcAttributeRoutes();

    routes.MapRoute(
            "Default",
            "{culture}/{Controller}/{action}/{id}",
            new {culture = _cul, controller = "Home", action = "Index", id = UrlParameter.Optional}
        );
    routes.MapRoute(
            "Home",
            "{culture}/Home/{action}/{id}",
            new {action = "Index", id = UrlParameter.Optional}
        );
}

所以网站所有页面的URL只会用文化打开。

我想打开一些没有文化的特定网站 URL。

例如,此 URL https://test.com/en-US/Cart/Cart/5 可以在不提供文化的情况下打开。

谢谢。

【问题讨论】:

    标签: c# asp.net asp.net-mvc routes culture


    【解决方案1】:

    解决方法是定义两个路由,有文化和没有文化

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

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2014-08-19
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多