2017-03-23 10 views
0

変数で終わるクラスレベルRouteを持つことは可能ですか? 例:クラスレベル変数asp.netでのルーティング

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

、あなたがその変数にアクセスする方法をもしそうなら?

これについて完全に間違っていると思いますか?私は、すべて同じ抽象クラスから派生した2つのオブジェクトを持っていますが、今はそれぞれ異なるコントローラーを持っていますが、実際はすべて同じです。すべてを処理する汎用メソッドを持つことは可能だが、オブジェクトの実際の型を解釈する最善の方法は不明だと思う。

例:

[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; 
    } 
} 

答えて

1

はい、あなたは常に次の例のようにそれを行うことができます。

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

はい、私はこれを何度も行っています。クラス名を取得し、リフレクションを使用するジェネリックアクションにマップするルートを作成し、そのアクションで必要なメソッドを呼び出します。

+0

私は私が私が見る – John

+1

を何を意味するのか明確にするために私のポストを編集し、あなただけのGetCarsのパラメータとしてcarTypeを追加することができませんか? "public IActionResult GetCars(string carType)"のように? –

+0

はい、うまくいく、あなたの右 – John

関連する問題