【问题标题】:MapRoute or MapHttpRoute in MVC WebAPIMVC WebAPI 中的 MapRoute 或 MapHttpRoute
【发布时间】:2015-10-14 13:40:28
【问题描述】:

由于 WebApi 路由映射可以通过 MapHttpRoute 完成:

            myConfig.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

我是否还需要像这样使用 MapRoute 映射路线:

            RouteTable.Routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
  • 第一个问题:如果我错了,请纠正我。我认为 MapRoute 只是为了支持 MVC 页面,如帮助页面等......所以如果我不 我的 Api 有任何 MVC 页面,我还需要实现吗 routes.MapRoute 部分?

  • 第二个问题:如果我需要将任何 mvc 页面添加到我的 Api(即帮助页面)中,可以通过 MapHttpRoute

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api asp.net-mvc-routing


    【解决方案1】:

    第一个问题

    如果你不使用 MVC,你不需要 MapRoute

    第二个问题

    没有。 MapHttpRoute 将仅针对派生自 ApiController 的类中的操作方法(或 IHttpController 的实现,但大多数情况下,这是从 ApiController 派生的高级方案)。

    另一方面,查看命名空间很直观。

    MapRoute 是类 RouteCollectionExtensions 的方法,它位于 System.Web.Mvc 命名空间中,请参阅this 了解更多信息

    MapHttpRoute 是 System.Web.Http 命名空间中的 HttpRouteCollectionExtensions 类的方法,请参阅this 了解更多信息

    这里的 System.Web.Http 与 WebAPI 相关。

    【讨论】:

    • 谢谢!所以基本上只要项目中没有从System.Web.Mvc.Controller派生的Controller,MapHttpRoute就足够了。一旦我需要一个 MVC 页面并添加一个从 System.Web.Mvc.Controller 派生的控制器,我应该实现 MapRoute 部分。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多