2016-07-15 83 views
0

我创造了我的RouteConfig.cs属性与空参数路由

 config.Routes.MapHttpRoute(
      name: "CustomFilter", 
      routeTemplate: "api/{controller}/{category}/{begin},{pageSize}", 
      defaults: new 
      { 
       category = RouteParameter.Optional, 
       begin = RouteParameter.Optional, 
       take = RouteParameter.Optional 
      } 
     ); 

以下的路径,即使用下面的方法:

public IHttpActionResult GetStudentsByCategory(string category, int begin, int pageSize) 
{ 
.. 
} 

定制路线工作正常,除非该类别参数丢失

1. api/students/tech/1,3 (is working) 
2. api/students//1,3 (not working) 

是否有可能使第二个URL请求(没有ca tegory参数)工作?

回答

1

再添加一个路由没有类别,它应该是高于目前的一个

config.Routes.MapHttpRoute(
     name: "CustomFilter-without-cat", 
     routeTemplate: "api/{controller}/{begin},{pageSize}", 
     defaults: new 
     { 
      begin = RouteParameter.Optional, 
      take = RouteParameter.Optional 
     } 
    ); 
    config.Routes.MapHttpRoute(
     name: "CustomFilter", 
     routeTemplate: "api/{controller}/{category}/{begin},{pageSize}", 
     defaults: new 
     { 
      category = RouteParameter.Optional, 
      begin = RouteParameter.Optional, 
      take = RouteParameter.Optional 
     } 
    );