2012-07-26 10 views
11

Widziałem, jak oba były używane, więc zastanawiam się, czy robią to samo lub różne rzeczy? Jeśli to drugie, jaka jest różnica?Czy należy używać parametru RouteParameter lub UrlParameter dla trasy internetowej programu ASP.NET?

Próbowałem odpowiedzieć na to pytanie osobiście, oglądając szablon aplikacji webowej MVC 4 (rc), ale niestety używa on obu, więc moje pomyłki pozostają. Oto co szablon zawiera:

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 } 
     ); 
    } 
} 

Odpowiedz

16

Zastosowanie RouteParameter dla tras Web API (.MapHttpRoute) i UrlParameter standardowych tras kontroler (MVC .MapRoute). Jak wiadomo, standardowe MVC i Web API to dwa całkowicie odrębne interfejsy API pod względem złożeń i przestrzeni nazw, nawet jeśli oba są dość podobne. Możesz na przykład samodzielnie hostować swój Web API w aplikacji konsolowej, więc nie będziesz miał nawet odniesienia do zespołu System.Web.Mvc i będziesz oczywiście używał w tym przypadku RouteParameter.

+0

Aha .. Nawet nie zauważyłem, że nazwali różne metody na obiekcie tras. Ale ma to sens. Zastanawiam się, dlaczego w szablonie aplikacji sieci Web uwzględniono widoki i materiały mvc. Mam nadzieję, że wkrótce zostaną wprowadzone szablony SPA. Dzięki! :) – Mithon

+0

Istnieje również inne zachowanie między dwoma z nich. Jeśli sprawdzisz ten post: http://stackoverflow.com/questions/19043266/in-asp-net-webapi-does-routeparameter-optional-mean-optional-part-of-the-url UrlParameter.Optional nie będzie wymagać aby określić parametry domyślne, podczas gdy RouteParameter.Optional będzie. –

Powiązane problemy