如何使用Web Api将路径参数传递给控制器​​上的属性?

时间:2013-04-08 17:12:56

标签: asp.net-web-api

假设我有如下路线:

/ API / V1 / {organisationId} /资源/ {RESOURCEID}

由于组织中可能存在许多不同类型的资源,我想要一种处理组织的常用方法。

我想做的是创建一个基本控制器(显然是继承自ApiController),它具有OrganisationId属性。

有没有办法让WebApi将organisationId路由参数传递给控制器​​上的属性,而不是传递给action方法的参数?

2 个答案:

答案 0 :(得分:3)

这个怎么样?

public int OrganisationId
{
    get
    {
        return Convert.ToInt32(Request.GetRouteData().Values["organisationId"]);
    }
}

这不使用模型绑定层,并假设路由数据中存在organisationId。它比Web API模型绑定提供的更简单,更灵活。

答案 1 :(得分:1)

从物业吸气剂中读取路线的缺点是单元测试可能是一个挑战。另一种可能的方法是探索实现自己设置OrganizationId属性的IHttpControllerActivator。是的,为了使其工作,您将需要一个基本控制器或在各个控制器中定义的属性,而不是从基础派生的。如果你使用base,你可以将IHttpController类型转换为基类并设置属性。或者你可以诉诸反思。