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

ASP.NET Web API Attribute Routing: RoutePrefix with Route Parameter

在 ASP.NET 中是否可以在包含路由参数的 ApiController 上使用 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 参数。

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

有关 http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

的更多信息