使用空参数的属性路由

时间:2016-07-15 13:20:41

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

我在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请求(没有类别参数)起作用?

1 个答案:

答案 0 :(得分:1)

再添加一个没有类别的Route,它应该高于当前的

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