【问题标题】:Custom route breaks Default routing Asp.Net自定义路由中断 默认路由 Asp.Net
【发布时间】:2022-01-10 09:27:38
【问题描述】:

我在默认路由上添加了控制器的自定义路由:

自定义:

routes.MapRoute(
            name: "FaqSubCategory",
            url: "{culture}/{controller}/{action}/{TapCode}",
            defaults: new { controller = "FAQ", action = "GetChosenFaqSubCategory", TapCode = UrlParameter.Optional },
            constraints: new { culture = new CultureConstraint() }
        );

自定义 v2:

routes.MapRoute(
            name: "FaqSubCategory",
            url: "{culture}/{controller}/{action}/{TapCode}",
            defaults: new { controller = "FAQ", action = "GetChosenFaqSubCategory", TapCode = UrlParameter.Optional },
            constraints: new { culture = new CultureConstraint(), FAQ = new TranslateControllersConstraint("4189") }
        );

默认值:

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

基本上由于该自定义路由,主页正在接收“/home/index”,而其他一些页面在 URL 末尾接收“/index”

当我像第二个变体一样编写自定义路由时,除了常见问题控制器之外,一切都运行良好。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    当 MVC 应用程序第一次启动时,它会创建路由表。默认路由表包含一个名为 Default 的路由。所以默认路由应该有默认名称,而不是 DefaultWithCulture 一个你的默认路由应该有默认文化

    routes.MapRoute(
                name: "Default",
                 url: "{culture}/{controller}/{action}/{ID}",
                defaults: new { culture="en", controller = "Home", action = "Index", ID = UrlParameter.Optional },
                .....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2014-04-23
      • 1970-01-01
      • 2015-09-26
      相关资源
      最近更新 更多