如何在基础web api控制器中提供可以通过属性路由访问的方法?



基类:

public class DataApiControllerBase<T> : ApiController
    {
        public List<ValidationResult> Validate(T input)
        {
            ...
        }
    }

派生类:

public class CustomerController: DataApiControllerBase<Customer>
    {
        [Route("api/customer/{id}")]
        public Customer Get([FromUri] Guid id)
       {
       }
    }

路由解析到什么,所以我在每个派生的控制器端点上得到一个"验证"端点?这是正确的做法吗?

我认为你可以使用方法重写来解决这个问题

基类

public class DataApiControllerBase<T> : ApiController
{
    public virtual List<ValidationResult> Validate(T input)
    {
        ...
    }
}

派生类

public class CustomerController: DataApiControllerBase<Customer>
{
    Route("api/customer/validate")]
    [HttpPost]
    public override List<ValidationResult> Validate(Customer input)
    {
        base.Validate(input);
    }
   Route("api/customer/{id}")]
   public Customer Get([FromUri] Guid id)
   {
   }
}   

相关内容

最新更新