具有空参数的属性路由

本文关键字:属性 路由 参数 | 更新日期: 2023-09-27 17:57:03

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

具有空参数的属性路由

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

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