ASP.NET Web API属性路由:具有路由参数的RoutePrefix

问题描述:

ASP.NET中是否有可能在包含路由参数的ApiController上具有RoutePrefix属性?ASP.NET Web API属性路由:具有路由参数的RoutePrefix

[RoutePrefix("api/parent/{pid}/child")] 
public class ChildController : ApiController 
{ 
    [Route("")] 
    public HttpResponseMessage Get(object pid) 
    { 
     //... 
    } 

    [Route("{cid}"] 
    public HttpResponseMessage Get(object pid, object cid) 
    { 
     //... 
    } 
} 

我想让所有控制器方法都可以使用pid参数。

+0

我能得到这个,如果我输入参数的工作({PID:INT}),并有输入参数是一个整数,而不是一个对象。 为什么它不像上面写的那样工作? – Mackers

您不能使用object作为参数类型,因为Web API不知道如何将字符串转换为对象。您必须使用简单类型,例如int,string,Guid等。如果您想使用复杂类型,则必须使用FromUri属性或为其编写自定义转换器。

更多信息上http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api