假设我有如下路线:
/ API / V1 / {organisationId} /资源/ {RESOURCEID}
由于组织中可能存在许多不同类型的资源,我想要一种处理组织的常用方法。
我想做的是创建一个基本控制器(显然是继承自ApiController),它具有OrganisationId属性。
有没有办法让WebApi将organisationId路由参数传递给控制器上的属性,而不是传递给action方法的参数?
答案 0 :(得分:3)
这个怎么样?
public int OrganisationId
{
get
{
return Convert.ToInt32(Request.GetRouteData().Values["organisationId"]);
}
}
这不使用模型绑定层,并假设路由数据中存在organisationId
。它比Web API模型绑定提供的更简单,更灵活。
答案 1 :(得分:1)
从物业吸气剂中读取路线的缺点是单元测试可能是一个挑战。另一种可能的方法是探索实现自己设置OrganizationId属性的IHttpControllerActivator。是的,为了使其工作,您将需要一个基本控制器或在各个控制器中定义的属性,而不是从基础派生的。如果你使用base,你可以将IHttpController类型转换为基类并设置属性。或者你可以诉诸反思。