【问题标题】:Separate RoutePrefix attribute on partial Web API v2 controllers部分 Web API v2 控制器上的单独 RoutePrefix 属性
【发布时间】:2014-08-06 12:11:12
【问题描述】:

我在我的一个 Web API 中遵循 RPC 方法,为此我将在我的控制器中使用属性路由。

我将控制器拆分为partial

Folder structure pic

JDE 文件夹下的所有部分文件必须具有相同的 RoutePrefix 并且操作将使 url 唯一。

namespace Enterprise.Api.Controllers.JDE.Distribution
{
    [RoutePrefix("/api/jde/distribution")]
    public partial class JDEController : ApiController
    {

    }
}

我希望每个部分文件都有自己的路由前缀,每个动作都有一个路由。

如果我将RoutePrefix 放入多个文件中,则会出现错误。

【问题讨论】:

    标签: c# asp.net-web-api asp.net-mvc-routing


    【解决方案1】:

    类的部分文件仍被视为一个类,因此您不能使用多个路由前缀属性...考虑为您的场景创建多个控制器类型...

    【讨论】:

      【解决方案2】:

      所以我做的是这样的:

      首先我将这个 ONE 时间添加到我的部分 APi 控制器:

      [RoutePrefix("api/jde")]
      public partial class JDEController : ApiController
      {
          public JDEController()
          {
      
          }
      }
      

      然后我在我的方法中添加一个 Route 属性以获得我想要的东西

      public partial class JDEController : ApiController
      {
      
          [Route("orders")]
          public IEnumerable<Order> Get(int customerId) { ... }
      }
      

      【讨论】:

      • 你也只需要继承ApiController一次,所以我建议只在包含构造函数'public partial class JDEController : ApiController'的部分类中拥有它
      • 有什么办法可以让我们像这样使用它,但是我们在所有部分类中继承 APIController,在我的情况下,我有包含一些泛型方法的通用控制器,所以我需要在每个部分类中使用它们
      猜你喜欢
      • 2014-09-23
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 2015-08-10
      • 2013-02-22
      • 2015-10-09
      相关资源
      最近更新 更多