具有变量的asp.net中的类级别路由

时间:2017-03-23 20:54:02

标签: c# asp.net

是否有可能以变量结尾的班级Route? 例如:

[Route("api/{carType}")]
public class CarController : Controller
{
  ..rest of class
}

如果是这样,您将如何访问该变量?

或者我只想到这完全错了?我有几个对象都来自同一个抽象类,现在我有一个不同的控制器,但实际上它们都是相同的。我认为可以使用泛型方法来处理所有内容,但不确定解释对象实际类型的最佳方法。

前:

[Route("api/{carType}")]
public class CarController : Controller
{
     [HttpGet()]
     public IActionResult GetCars()
     {
        IActionResult result; 
        switch(carType){
            case "Ford":
               result = myService.GetCars<Ford>();
               break;
            case "Toyota":
               result = myService.GetCars<Toyota>();
               break;
            ....
        }
        return result; 
     }
}

2 个答案:

答案 0 :(得分:1)

是的,我已多次这样做了。您将创建一个路由,该路由映射到采用类名称然后使用反射的泛型操作,在该操作上调用您想要的任何方法。

答案 1 :(得分:1)

是的,您可以像以下示例一样执行此操作:

[RoutePrefix("customers/{customerId}")]
public class OrdersController : ApiController
{
    // GET customers/1/orders
    [Route("orders")]
    public IEnumerable<Order> Get(int customerId) 
    { 
      ... 
    }
}