2012-07-26 9 views
11

私は両方が使われているのを見たことがあるので、彼らは同じことか別のものをやっているのでしょうか?後者の場合、違いは何ですか?Asp.NET Web-APIルートにRouteParameterまたはUrlParameterを使用する必要がありますか?

私はビジュアルスタジオの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 } 
     ); 
    } 
} 

答えて

16

Web APIをルートの使用RouteParameter.MapHttpRoute)と、標準的なMVCコントローラルートのUrlParameter.MapRoute)。あなたが知っているように、標準MVCとWeb APIは、アセンブリと名前空間の点で2つの完全に異なるAPIですが、どちらもかなり似ています。たとえば、コンソールアプリケーションでWeb APIを自己ホストすることができるので、System.Web.Mvcアセンブリへの参照もなく、この場合はもちろんRouteParameterを使用します。

+0

Aha ..私は、ルートオブジェクトでさまざまなメソッドを呼び出したことに気付きませんでした。しかしそれは理にかなっています。私はなぜそれらがビューとmvcのものをWeb APIテンプレートに含めているのだろうかと思います。彼らはすぐにSPAのテンプレートでやり遂げられることを願っています。ありがとう! :) – Mithon

+0

また、これらの2つの間で異なる動作があります。この投稿をチェックした場合:http://stackoverflow.com/questions/19043266/in-asp-net-webapi-does-routeparameter-optional-mean-optional-part-of-the-url UrlParameter.Optionalは必要ありませんデフォルトパラメータを指定し、RouteParameter.Optionalは指定します。 –

関連する問題