我在使用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
}
);
带有空参数的第一个网址似乎工作正常,但是当我将其转换为属性路由时,它不适用于'类别'参数为空。将其转换为属性路由的正确方法是什么?
答案 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=3
与StudentsController.Index
匹配。