问题

如何为路由中参数设置默认值。


解决方案

不管使用属性路由还是集中式路由,ASP.NET WEB API 都可以很方便的为路由定义默认参数。在每次客户端请求的时候,如果客户端没有传这些参数,框架会自动给他们赋值。


对于集中式路由,MapHttpRoute 扩展方法接收默认值使用的是第三个参数 IDictionary 的形式(也是一个匿名类)。Key(或者匿名对象的属性)必须与路由模板中参数名称一致。

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new {id = VALUE}
    );


在属性路由中,直接在属性声明中定义默认值。

[Route("items/{id:int=VALUE}")] public HttpResponseMessage Get(
        		

网友评论