【问题标题】:route request to controller based on route parameter根据路由参数将请求路由到控制器
【发布时间】:2012-07-11 14:23:27
【问题描述】:

我想根据 URI 中的版本号将请求路由到特定的版本控制器。

例如,

routes.MapHttpRoute(
            name: "APIV2",
            routeTemplate: "BlogFeed/{version}/{id}",
            defaults: new { id = RouteParameter.Optional, controller = "BlogFeedV2"}
        );

我想要的是基于版本路由参数,我想将请求路由到该版本控制器。因此,如果版本路由参数为 v2,则该请求应由 BlogFeedV2 处理。有办法处理吗?

【问题讨论】:

    标签: asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    为什么不:

      routes.MapHttpRoute(
            name: "APIV2",
            routeTemplate: "BlogFeed/v2/{id}",
            defaults: new { id = RouteParameter.Optional, controller = "BlogFeedV2"}
        );       
      routes.MapHttpRoute(
            name: "APIV1",
            routeTemplate: "BlogFeed/v1/{id}",
            defaults: new { id = RouteParameter.Optional, controller = "BlogFeedV1"}
        );
    

    【讨论】:

    • 谢谢。我想过,但有没有其他方法可以做到这一点?否则,我最终会得到每个版本的每个路由条目。
    • 您可以从设置中即时加载它们,或者为 API 版本添加单独的方法。但老实说,如果你每 3 个月做一个版本,当 mvc 5 上线时,你只会在 6 岁
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2013-03-04
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多