自定义路由属性与url中的参数

时间:2016-07-15 14:27:28

标签: angularjs asp.net-mvc asp.net-web-api

我在使用angularJS的网络请求中使用以下带有空类别的网址:

/api/students/?category=&begin=2&pagesize=3

我尝试将其转换为属性路由:

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

带有空参数的第一个网址似乎工作正常,但是当我将其转换为属性路由时,它不适用于'类别'参数为空。将其转换为属性路由的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您遇到没有任何参数位于网址中间的情况,您应该创建另一条没有此参数的路由,并将其放在路由后的路由中。

"a"

答案 1 :(得分:1)

您在帖子中描述的内容是基于约定的路由,而不是属性路由。

鉴于此路线

/api/students/?category=&begin=2&pagesize=3

控制器可能看起来像这样。

public StudentsController : ApiController {
    public Students Index(int category, int begin, int pagesize) { ... }
}

和路线配置:

config.Routes.MapHttpRoute(
    name: "CustomFilter",
    routeTemplate: "api/{controller}"
);

框架中的绑定引擎会根据请求中的查询参数将请求/api/students/?category=&begin=2&pagesize=3StudentsController.Index匹配。