问题 我应该将RouteParameter或UrlParameter用于Asp.NET web-api路由吗?


我已经看到两者都被使用了,所以我想知道,他们做同样的事情或不同的事情吗?如果是后者,有什么区别?

我试着通过浏览视觉工作室MVC 4(rc)web api模板来尝试回答它,但遗憾的是它使用了两者,所以我的困惑仍然存在。这是模板包含的内容:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

12534
2017-07-26 12:05


起源



答案:


使用 RouteParameter 用于Web Api路线(.MapHttpRoute)和 UrlParameter 用于标准MVC控制器路由(.MapRoute)。如您所知,标准MVC和Web API在程序集和命名空间方面是2个完全不同的API,即使两者非常相似。例如,您可以在控制台应用程序中自托管您的Web API,因此您甚至不会引用它 System.Web.Mvc 装配,你当然会使用 RouteParameter 在这种情况下。


16
2017-07-26 12:21



啊啊..我甚至没有注意到他们在路线对象上调用了不同的方法。但这是有道理的。我想知道他们为什么在web api模板中包含了视图和mvc的东西。希望他们尽快完成SPA模板。谢谢! :) - Mithon
其中两个之间也存在不同的行为。如果你查看这篇文章: stackoverflow.com/questions/19043266/... UrlParameter.Optional不需要您指定默认参数,而RouteParameter.Optional将。 - Erti-Chris Eelmaa


答案:


使用 RouteParameter 用于Web Api路线(.MapHttpRoute)和 UrlParameter 用于标准MVC控制器路由(.MapRoute)。如您所知,标准MVC和Web API在程序集和命名空间方面是2个完全不同的API,即使两者非常相似。例如,您可以在控制台应用程序中自托管您的Web API,因此您甚至不会引用它 System.Web.Mvc 装配,你当然会使用 RouteParameter 在这种情况下。


16
2017-07-26 12:21



啊啊..我甚至没有注意到他们在路线对象上调用了不同的方法。但这是有道理的。我想知道他们为什么在web api模板中包含了视图和mvc的东西。希望他们尽快完成SPA模板。谢谢! :) - Mithon
其中两个之间也存在不同的行为。如果你查看这篇文章: stackoverflow.com/questions/19043266/... UrlParameter.Optional不需要您指定默认参数,而RouteParameter.Optional将。 - Erti-Chris Eelmaa